Как увеличить значение дроби в цикле с Python

Я пытался сделать цикл, увеличивая числитель на 1 каждую итерацию, но я получил эту ошибку:

ZeroDivisionError: Fraction (1, 0)

Мой код примерно такой:

from fractions import Fraction
x = Fraction(0,48)
z = x.numerator
limit = (48,48)    
while x == limit:
    print("cycle " + str(z))
    x += Fraction(1,0)
print("loop finished!")

2 ответа

Решение

Похоже, что вы увеличиваете х от нуля до единицы с шагом 1/48

попробуй это

from fractions import Fraction
m_denominator = 48
x = Fraction(0,m_denominator)
z = 0
limit = Fraction(m_denominator,m_denominator)    #notice limit is now a Fraction object
while x <= limit: #notice, i changed this
    print("cycle " + str(z))
    z = z+1
    x += Fraction(1,m_denominator)
print("loop finished!")

Если все, что вам нужно, это список фракций, вы можете просто создать их с пониманием списка:

>>> from fractions import Fraction
>>> n = 48
>>> [Fraction(i, n) for i in range(n + 1)]
[Fraction(0, 1), Fraction(1, 48), Fraction(1, 24), Fraction(1, 16), Fraction(1, 12), Fraction(5, 48), Fraction(1, 8), Fraction(7, 48), Fraction(1, 6), Fraction(3, 16), Fraction(5, 24), Fraction(11, 48), Fraction(1, 4), Fraction(13, 48), Fraction(7, 24), Fraction(5, 16), Fraction(1, 3), Fraction(17, 48), Fraction(3, 8), Fraction(19, 48), Fraction(5, 12), Fraction(7, 16), Fraction(11, 24), Fraction(23, 48), Fraction(1, 2), Fraction(25, 48), Fraction(13, 24), Fraction(9, 16), Fraction(7, 12), Fraction(29, 48), Fraction(5, 8), Fraction(31, 48), Fraction(2, 3), Fraction(11, 16), Fraction(17, 24), Fraction(35, 48), Fraction(3, 4), Fraction(37, 48), Fraction(19, 24), Fraction(13, 16), Fraction(5, 6), Fraction(41, 48), Fraction(7, 8), Fraction(43, 48), Fraction(11, 12), Fraction(15, 16), Fraction(23, 24), Fraction(47, 48), Fraction(1, 1)]

В Python вам обычно не нужно увеличивать счетчик вручную.

Другие вопросы по тегам