# 1- Задайте список из нескольких чисел. Напишите программу, которая найдёт сумму элементов списка,
# стоящих на нечётной позиции.
# *Пример:*
# - [2, 3, 5, 9, 3] -> на нечётных позициях элементы 3 и 9, ответ: 12

list1=[2, 3, 5, 9, 3]
print(list1)
def sum_odd_in_list(list_num):
    '''Функция, которая находит сумму элементов списка, стоящих на нечётной позиции.'''
    sum_elem=0
    new_l=[]   
    for i in range(len(list_num)):
        if i%2==1:            
            sum_elem+=list_num[i]
            new_l.insert(i,list_num[i])
    print(f'На нечетных позициях находятся элементы',new_l)
    print(f'Сумма элементов списка, стоящих на нечётной позиции равна: ', sum_elem)
sum_odd_in_list(list1)
print()
# 2-Напишите программу, которая найдёт произведение пар чисел списка.
# Парой считаем первый и последний элемент,второй и предпоследний и т.д.
# *Пример:*
# - [2, 3, 4, 5, 6] => [12, 15, 16];
# - [2, 3, 5, 6] => [12, 15]

list2=[2, 3, 4, 5, 6] 
print(list2)
def multi_of_pairs(list_nums):
    '''произведение пар чисел списка''' 
    l=[]
    if  len(list_nums)%2==1:
        length=len(list_nums)//2+1
    else: length=len(list_nums)//2
    for i  in range(length):
            mult=list_nums[i]*list_nums[len(list_nums)-i-1]
            l.insert(i,mult)
    print(f'Произведение пар чисел заданного массива: ',l)
multi_of_pairs(list2)
print()
# 3-Задайте список из вещественных чисел. Напишите программу, 
# которая найдёт разницу между максимальным и минимальным значением дробной части элементов.
# *Пример:*
# - [1.1, 1.2, 3.1, 5.17, 10.02] => 0.18 или 18
#  - [4.07, 5.1, 8.2444, 6.98] - 0.91 или 91

list3=[1.1, 1.2, 3.1, 5.17, 10.02]
print(list3) 
def dif_max_min_fract(l1):
    '''Разность между максимальным и минимальным значением дробной части элементов'''
    l2=[]
    for i  in range(len(l1)):
        l2.insert(i,l1[i]%1)
    print(f'Разность между максимальным и минимальным значением дробной части элементов: ',round((max(l2)-min(l2)),2)) 
dif_max_min_fract(list3)    
print()
# 4- Напишите программу, которая будет преобразовывать десятичное число в двоичное.
# *Пример:*
# - 45 -> 101101
# - 3 -> 11
# - 2 -> 10
a = int(input('Введите число:'))
def dec_to_bin(n):
    '''Преобразование десятичного числа в двоичное'''
    b = ''
    while n > 0:
        b = str(n % 2) + b
        n = n // 2
    print(b)
dec_to_bin(a)
print()

# 5-Задайте число. Составьте список чисел Фибоначчи, в том числе для отрицательных индексов.
#*Пример:*
# - для k = 8 список будет выглядеть так: 
# [-21 ,13, -8, 5, −3, 2, −1, 1, 0, 1, 1, 2, 3, 5, 8, 13, 21] [Негафибоначчи](https://clck.ru/yWbkX.)
def fib(n):  
    '''Последовательность Фибоначчи'''
    if n in [1, 2]:        
        return 1    
    else:        
        return fib(n-1) + fib(n-2)
b=int(input('Введите число: '))
def negfib_fib(a):
    '''Склейка последовательностей негафибоначчи и Фибоначчи'''
    list = [] 
    for e in range(1,a):   
        list.append(fib(e))     
    list1 = [] 
    for e in range(1,a):   
        list1.append(fib(e)*((-1)**(e+1)))     
    list2 = list1[::-1]
    list3=[0]
    print(f'Последовательность негафибоначчи + Фибонначи для {b} будет:',list2+list3+list)
negfib_fib(b)