【问题标题】:How to increase the value of a fraction in a loop with Python如何使用 Python 在循环中增加分数的值
【发布时间】:2017-11-13 17:42:20
【问题描述】:

我试图做一个循环,每次迭代将分子增加 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!")

【问题讨论】:

  • Fraction(1,0) 永远不会是有效分数...
  • x = Fraction(x.numerator + 1, 48) ?
  • 尝试增加变量i 并执行类似Fraction(i,48)的操作
  • 这个脚本的目标是什么?你期望的输出是什么?

标签: python python-2.7 loops while-loop fractions


【解决方案1】:

看起来您将 x 从 0 增加到 1,步长为 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!")

【讨论】:

    【解决方案2】:

    如果您只需要一个分数列表,您可以简单地使用列表推导式创建它们:

    >>> 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 中,您通常不需要手动增加任何计数器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2019-08-24
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2015-04-24
      相关资源
      最近更新 更多