def hw_01_01():
    '''
    1. Пончики
Дано кількість пончиків (ціле число). Потрібно вивести стрічку наступного виду: ’Кількість
пончиків: <count>’, де <count> це кількість, яка задається. Проте, якщо кількість 10 і біль-
ше — потрібно використовувати слово ’багато’, замість поточної кількості. Таким чином,
коли задати кілкість пончиків, то стрічка матиме вигляд ’Кількість пончиків: 5’ а при 23 —
’Кількість пончиків: багато’.
    '''
    q = int(input('Яка кількість пончиків?'))
    if q > 0:
        d = {1: 'один', 2: 'два', 3: 'три', 4: 'чотири', 5: 'п\'ять', 6: 'багато'}
        q = (6 if q > 5 else q)
        print('Кількість пончиків:', d[q])

def hw_01_02():
    '''2. Обидва кінці
Дано стрічка s. Виведіть стрічку, яка складається з перших 2 і останніх 2 символів початкової
стрічки. Таким чином, із стрічки ’spring’ отримають ’spng’. Проте, якщо довжина стрічки
менше, ніж 2 — виведіть просто пусту стрічку.'''
    s = input('Введіть стрічку:')
    if len(s) > 1:
        print(s[:2] + s[-2:])
    else:
        print('')

def hw_01_03():
    '''
    3. Крім першого
Дано стрічка s. Виведіть стрічку, в якій всі входження її першого символу замінені на ’*’, за
винятком самого цього першого символа. Тобто, з ’babble’ отримують ’ba**le’. Передбачає-
ться, що довжина стрічки 1 і більше.
Підказка: s.replace(stra, strb) поверне версію стрічки, в якій всі входження stra будуть замінені
на strb.    '''
    s = input('Введіть стрічку:')
    if len(s) > 0:
        print(s[0] + s.replace(s[0], '*')[1:])
    else:
        print('Read the task')

def hw_01_04():
    '''
    4. Змішування
Дано стрічки a і b. Виведіть одну стрічку, в якій a і b відділені прогалиною ’<a> <b>’, і
поміняно місцями перші 2 символи кожної стрічки. Тобто: ’mix’, ’pod’ -> ’pox mid’; ’dog’,
’dinner’ -> ’dig donner’.
Передбачається, що стрічки a і b мають довжину 2 і більше символів.'''
    s1 = input('Введіть стрічку 1:')
    s2 = input('Введіть стрічку 2:')
    if len(s1) > 1 and len(s2) > 1:
        ss1 = s2[0:2] + s1[2:]
        ss2 = s1[0:2] + s2[2:]
        print(ss1, ss2)
    else:
        print('Read the task')

def hw_01_05():
    '''
    5. Хороший
Дано стрічка. Знайдіть перше входження підстрічок ’не’ і ’поганий’. Якщо ’погоний’ йде пі-
сля ’не’ — замініть всю підстрічку ’не’...’поганий’ на ’хорошийй’. Виведіть отриману стрі-
чку. Тобто, ”Цей комп’ютер не такий вже поганий!’ поверне: ”Цей комп’ютер хороший!”'''
    s = 'Цей комп’ютер не такий вже поганий!'
    find_word1 = 'не'
    find_word2 = 'поганий'
    p1 = s.find(find_word1)
    p2 = s.find(find_word2)
    if p1 > 0 and p2 > 0:
        print(s[:p1] + 'хороший' + s[p2 + len(find_word2):])

def hw_01_06():
    '''
    6. Дві половинки
Розглянемо розділення стрічки на дві половинки. Якщо довжина парна — обидві половинки
мають однакову довжину. Якщо довжина непарна —– доподатковий символ приєднується
до першої половиці. Тобто, ’abcde’, першая половина ’abc’, друга - ’de’. Дані 2 стрічки, a і b,
виведіть стрічку виду: 1-половинка-a + 1-половинка-b + 2-половинка-a + 2-половинка-b
    '''
    s1 = 'abcde'
    s2 = '1234'
    z1 = len(s1) // 2 + len(s1) % 2
    z2 = len(s2) // 2 +  len(s2) % 2
    print(s1[:z1] + s2[:z2] + s1[z1:] + s2[z2:])

def hw_01_07():
    '''
7. Реверс стрічки
Перетворити стрічку в її дзеркальне відображення (реверсувати). Виконати різними спосо-
бами.
    '''
    s = '123456789'
    s1 = s[::-1]
    print('Реверс стрічки способом 1 -', s1)
    s2 = list(s)
    s2.reverse()
    s2 = ''.join(s2)
    print('Реверс стрічки способом 2 -', s2)

def hw_01_08():
    '''
8. Підрахунок голосних
Підрахувати кількість голосних в стрічці. Програма повинна бути нечутливою до регістру.'''
    s = 'Паліндром — і ні морд, ні лап'
    s.lower()
    vowels = ['а', 'е', 'и', 'і', 'о', 'є', 'ю', 'я', 'ї']
    q = 0
    for ss in vowels:
        qq = s.count(ss)
        q += qq
        #print(ss)
    print('Кількість голосних у стрічці \'', s, '\'становить', q)

def hw_01_09():
    '''
9. Підрахунок входження підстрічки
Реалізувати підрахунок кількості входження підстрічки ”waw” в стрічці.
    '''
    s = 'lkj waw lkjwaw lkjwawlkj wawlj lkjkj'
    q = s.count('waw')
    print('Кількість \'waw\' у стрічці \'', s, '\'становить', q)

def hw_01_10():
    '''10. Впорядкована підстрічка
Реалізувати пошук в стрічці підстрічки максимальної довжини, в якій букви впорядковані за
алфавітом.'''
    s = 'acdg  lkjk jwa bcwd efg abc'
    s.lower()
    s = s.replace(' ', '')
    s_c = ''
    q = max_q = max_pos = 0
    for pos in range(len(s)-1):
        if ord(s[pos]) < ord(s[pos+1]):
            q += 1
            if q > max_q:
                max_q = q
                max_pos = pos
        else:
            q = 0
    print(s, '\n', max_q + 1, s[max_pos - max_q + 1 : max_pos + 2])


    for cc in s:
        s_c += str(ord(cc)) + '\t'

    print(s_c)

def hw_01_11():
    '''
11. Визначення типу
Реалізувати вивід стрічки з назвою типу об’єкта, який задається користувачем.
    '''
    print('I don\'t understand the task')

def hw_01_12():
    '''
12. A & B
Написати фрагмент коду, який буде аналізувати дві змінних (A і B), які можуть бути ти-
пу стрічка або ціле число. В залежності від значення змінних код повинен виводити одне з
наступних повідомлен: ”отримана стрічка”, якщо хоча б одна змінна є стрічкою; ”більше”,
якщо A більше B; ”рівні”, якщо значення змінних рівні; ”менше”, якщо A менше B.
'''
    A = 5.08
    B = 'five'

    type_A = type(A)
    type_B = type(B)

    ans = ('отримана стрічка' if type_A is str or type_B is str else 'dig')

    if ans is 'dig':
        if type_A is int and type_B is int or float:
            if A > B:
                ans = 'більше'
            elif A < B:
                ans = 'менше'
            else:
                ans = 'рівні'
    print(ans)

def hw_01_13():
    '''
    13. Унікальний набір
Реалізувати програмy, яка приймає список елементів і забирає з нього всі дублікати (формує
список унікальних елементів). Зробити варіант зі збереженням порядку слідування і варант,
в якому сортування елементів не суттєве.
    '''
    elements_t = (4, 2, 1, 2, 1, 2, 1, 2, 1, 2)
    elements_set = set(elements_t)
    elements_l = list(elements_t)
    elements_str = ''.join(str(elements_t))
    print('Вхідний список', elements_str)
    for e in elements_set:
        for e_q in range(elements_l.count(e) - 1):
            e_delete = elements_str.rindex(str(e))
            elements_str = elements_str[:e_delete -1] + elements_str[e_delete + 1:]
    elements_str = elements_str.replace(',,', '')
    print('elements_set iз збереженням порядку елементів', elements_set)
    print ('elements_str без збереження порядку елементів', elements_str)

def hw_01_14():
    '''
    14. Кожен третій
    Реалізувати програму, яка приймає список і проріжує його, залишаючи кожен третій елемент.
    Реалізувати двома способами.
    '''
    elements_l = [c for c in range(10)]
    elements_l = ['один','два','три','чт','п','шість','сім','вісіт','дев','десять']

    elements_l1 = elements_l[::3]

    elements_l2 = []
    elements_del = [d for d in range(elements_l.__len__())]
    elements_del = elements_del[::3]
    for e_del in elements_del:
        elements_l2.append(elements_l[e_del])

    print('спосіб 1:', elements_l1)
    print('спосіб 2:', elements_l2)

hw_01_14()
