[英]How to increase the value of a fraction in a loop with Python
我試圖做一個循環,每次迭代使分子增加1,但是我得到了這個錯誤:
ZeroDivisionError:分數(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!")
看起來您以1/48的步長將x從零增加到一
嘗試這個
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中,通常不需要手動增加任何計數器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.