Баг с повторением

Пишу преобразователь чисел в дроби, и интерпретатор почему-то выводит дробь столько же раз, как и длина строки, которую я ввожу, но при этом мне нужна черточка длины строки, которую я ввожу. Как пофиксить повторение?

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 шт):

Автор решения: Zhihar

А что вы хотите, если у вас есть цикл для анализа цифр введенного числа

for letter in human:

и для каждой цифры вы формируете 3 строки вывода дроби

у вас и получается - сколько цифр в числе, столько дробей и будет выведено

Вообще код очень неэффективный - очень много лишних операций

→ Ссылка