def limit():
s=0.0
x=1.0
while True:
y=1.0/x
s=s+y
yield(s)
x*=2
计算 s=1+1/2+1/4+.......+1/2^n
追问我复制粘贴了一下,程序说第一行就出错了。是不是版本有问题?(我用2.7)
追答from fractions import Fraction
def limit():
s=Fraction(0)
x=Fraction(1,1)
while True:
y=1/x
s=s+y
yield s
x*=2
result=limit()
for i in range(20):
elem=next(result)
print("%d/%d"%(elem.numerator,elem.denominator))
是不是缩进不对,前面多了空格,2.6中运行正常,2.7应该也正常
我又改写了一下,用分数表示结果,并打印前20项
用浮点数有精度限制,在若干项之后结果都 是2.0了
追问亲,还是第一行有问题。不知道为什么,有时一个程序输入完全正确,结果在最不该有回题的地方出了问题。