for не выполняется
Я пишу программу, чтобы складывать (как минимум) дроби. Пишу в программе Sublime Text 4. Код:
a = input("Format: 1/2 Input: ")
b = input("Input: ")
a.partition('/')
b.partition('/')
numberOn1 = int(a[0])
numberUnder1 = int(a[2])
numberOn2 = int(b[0])
numberUnder2 = int(b[2])
nullList = [0,1,2,3,4]
num = 0
operator = input("Operator: ")
if operator == '+':
for n in nullList:
fraction1 = ''
fraction2 = ''
num += 1
if num % numberUnder1 == 0:
if num % numberUnder2 == 0:
oneMult = num / numberUnder1
twoMult = num / numberUnder2
numberOn1 = numberOn1 * oneMult
numberOn2 = numberOn2 * twoMult
fraction1 = numberOn1,'/',num
fraction2 = numberOn2,'/',num
print(fraction1,fraction2)
break
else:
continue
print("End")
input()
Так в чём суть? Программа просто не производит действий из for. Я перенёс print из остального кода в for и узнал, что for вообще не выполняется. Ну и что делать?
Ответы (1 шт):
Автор решения: zolars
→ Ссылка
Если вы хотите складывать дроби и при этом сокращать их, то это можно сделать гораздо проще, тут не нужен ни for, ни nullList, вот мой пример как это можно сделать, он не идеален и не работает умножение с делением, но складывание и вычитание работает прекрасно:
from math import gcd
numberOn1, numberUnder1 = map(int, input("Format: 1/2 Input: ").split("/"))
numberOn2, numberUnder2 = map(int, input("Input: ").split("/"))
operator = input("Operator: ")
simplifier = gcd(numberUnder1, numberUnder2)
commonUnder = numberUnder1 * numberUnder2 // simplifier
commonOn = eval(str(numberOn1 * numberUnder2 // simplifier) + operator + str(numberOn2 * numberUnder1 // simplifier))
simplifier = gcd(commonOn, commonUnder)
print(commonOn // simplifier, "/", commonUnder // simplifier, sep="")
input("End\n")
а ваш код не работал, как раз таки из-за nullList, так как в нем было слишком мало значений