首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法理解为什么这段代码在不同版本的python中给出了不同的结果

无法理解为什么这段代码在不同版本的python中给出了不同的结果
EN

Stack Overflow用户
提问于 2015-11-04 06:40:11
回答 1查看 50关注 0票数 1

不久前,我发现了计算pi数字的代码:

代码语言:javascript
复制
def pi_digits():
    """generator for digits of pi"""
    q,r,t,k,n,l = 1,0,1,1,3,3
    while True:
        if 4*q+r-t < n*t:
            yield n
            q,r,t,k,n,l = (10*q,10*(r-n*t),t,k,(10*(3*q+r))/t-10*n,l)
        else:
            q,r,t,k,n,l = (q*k,(2*q+r)*l,t*l,k+1,(q*(7*k+2)+r*l)/(t*l),l+2)
digits = pi_digits()
for i in range(30): print digits.next()

现在我想在Python3.4中使用它,并做了一些修改:

代码语言:javascript
复制
def pi():
    '''Generator for digits of pi'''
    q,r,t,k,n,l = 1,0,1,1,3,3
    while True:
        if 4*q+r-t < n*t:
            yield n
            q,r,t,k,n,l = (10*q,10*(r-n*t),t,k,(10*(3*q+r))/t-10*n,l)
        else:
            q,r,t,k,n,l = (q*k,(2*q+r)*l,t*l,k+1,(q*(7*k+2)+r*l)/(t*l),l+2)

def main():
    a=pi()
    i=30
    while i>0:
        print(next(a))
        i-=1

if __name__ == '__main__':
    main()

但是我的代码打印错误的结果,比如:

代码语言:javascript
复制
3.0,
1.0476190476190477,
3.272283272283272,
3.6476767126921925,
4.078229842128079,
4.6365352277262,
5.345159217838377,
6.228740292622248,
7.819098709270982,
4.255764551767985,
5.069552326563916,
6.0642804719748575...

那么,有什么不同呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 06:48:17

我相信区别在于你的部门。在Python 2中,一个整数除以另一个整数会产生一个整数。在Python 3中,它生成一个浮动。我相信您可以使用//操作符代替/来实现Python3中所需的行为。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33515245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档