Баг с повторением
Пишу преобразователь чисел в дроби, и интерпретатор почему-то выводит дробь столько же раз, как и длина строки, которую я ввожу, но при этом мне нужна черточка длины строки, которую я ввожу. Как пофиксить повторение?
if mode in ("Fraction", "fraction", "frc", "Frc", "fr", "Fr"):
pass
elif mode in ("Integer", "int", "Int", "integer"):
den = input ("Choose the denominators: [10, 100, 1000, 10000, 100000, 1000000, 10000000, 50, 500, 5000, 20, 200, 2000]\n")
if den in ("10", "100", "1000", "10000", "100000", "1000000", "10000000", "50", "500", "5000", "20", "200", "2000"):
numbDen = int (den)
human = input ("What number?\n")
for letter in human:
if letter in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'):
intHuman = int (human)
numerator = intHuman * numbDen
strNumerator = str(numerator)
print (numerator)
dash = '_' * len (strNumerator)
print (dash)
print (numbDen)
else:
raise SyntaxError ("Uncorrect number")
else:
raise SyntaxError ("Can't recognize this denominators")
elif mode in ("Float", "float", "flt", "Flt", "fl", "Fl"):
pass
else:
raise TypeError ("Invalid mode")
Вот что он выводит: [Fraction/Integer/Integer with Float?] int Choose the denominators: [10, 100, 1000, 10000, 100000, 1000000, 10000000] 1000000 What number? 439 439000000
1000000 439000000
1000000 439000000
1000000
Ответы (1 шт):
А что вы хотите, если у вас есть цикл для анализа цифр введенного числа
for letter in human:
и для каждой цифры вы формируете 3 строки вывода дроби
у вас и получается - сколько цифр в числе, столько дробей и будет выведено
Вообще код очень неэффективный - очень много лишних операций