Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Функция задаёт ряд фибоначи (рекурсией)
- def fib(n):
- if n in (1, 2):
- return 1
- return fib(n - 1) + fib(n - 2)
- #Функция перевода строки в числовой вид
- def Integere(n):
- nm = 0
- b1 = 0
- b1 = 10**(len(n) - 1)
- for i in range(len(n)):
- nm += (ord(n[i])-48) * b1
- b1//=10
- return(nm)
- #Открываем файл на чтение и запись
- f = open('Input.txt')
- f1 = open('Output.txt', 'w')
- #Читаем файл и разбиваем его по переносу строки
- text = f.read()
- text = text.split('\n')
- #цикл обработки данных (перевод из одной сс в другую)
- for n in range(len(text)):
- #объявление переменных для перевода чисел
- out = ''
- s = ''
- a = text[n]
- a = a.split(' ')
- j = 2
- cnt = 0
- numOut = 0
- #конец объявления переменных
- #Создание начальной строчки для вывода 1СС -> 2СС
- out = out + a[0] + " -> " + a[1] + ": "
- #Определяем из какого числа нам надо переводить, если 10 до в 2 СС, если fib то в 10 СС
- if a[0] == '10':
- #Превод в двоичную СС +)
- while j < len(a):
- num = Integere(a[j])#Используем функцию перевода в число
- NumTest = str(num)
- while num > 0:
- s = s + str(num%2)
- #Разделяем точами тетрады
- cnt+=1
- if (cnt%4 == 0 and num > 1) :
- s = s + "."
- cnt = 0
- #/////////////////////////
- num//=2
- #Создаём вывод
- out = out + NumTest + " -> " + s[:: -1] + " "
- cnt = 0
- s = ''
- j+=1
- elif a[0] == 'fib':
- #Перевод из фибоначивой в 10 СС
- while j < len(a):
- l = len(a[j]) + 1
- for i in range(len(a[j])):
- num = Integere(a[j][i]) #Переводм строку в число
- numOut = numOut + fib(l)*num #используем функцию для получения элемента ряда фиб и умножаем на цифру числа в фиб СС
- l-=1
- #Создаем вывод
- out = out + a[j] + " -> " + str(numOut) + " "
- numOut = 0
- j+=1
- print(out)
- f1.write(out + '\n')
- #Закрываем файлы
- f.close()
- f1.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement