Как увеличить значение дроби в цикле с 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 вам обычно не нужно увеличивать счетчик вручную.