为了账号安全,请及时绑定邮箱和手机立即绑定

python生成斐波拉契数列的问题

python生成斐波拉契数列的问题

Leo_clip 2017-05-02 20:12:53
def fib(max):     n, a, b = 0, 0, 1     while n < max:         print(b)         a, b = b, a + b         n = n + 1     return 'done'这里的a, b = b, a + b理解不了,求大神详细解释
查看完整描述

1 回答

已采纳
?
Iamxiaoq

TA贡献33条经验 获得超6个赞

# 交换两个变量的值,在其他语言中需要借助第三个变量,比如
a = 1
b = 2

# 借助第三个变量,实现交换两个变量的值
t = a
a = b
b = t

# 在Python中有更简洁的实现
a,b = b,a

# 再尝试理解一下 a, b = b, a+b ,这个表达式会先计算赋值符号右边的值 (b,a+b) --> (2, 1+2)
# 再把结果赋值给左边的a,b--> a=2, b=3
查看完整回答
反对 回复 2017-05-02
?
rookie2maven

TA贡献278条经验 获得超76个赞

a=b,b=a+b
查看完整回答
1 反对 回复 2017-05-02
  • Leo_clip
    Leo_clip
    大概猜也是这个意思,为什么不按这个格式写代码呢,那个格式有点理解不了,像这个a,就完全不知道对a进行什么操作。。能详细解释下吗
  • rookie2maven
    rookie2maven
    python语法这样人为规定的,也只有按照这样的语法写
  • rookie2maven
    rookie2maven
    这好像是一道兔子繁殖的经典题目
点击展开后面1
?
放学路上的小学生

TA贡献5条经验 获得超0个赞

等号左边第1位=右边第1位

等号左边第2位=右边第2位


注意,右边采用的值是运算前的值。例如下边最后 b = b+a = 10+6,这里a=6。(虽然a=b时,a变成了10,但计算b时,沿用a原值,而不是改变的值。)

a = 6
b = 10
c = 7
a, b, c = b, b + a, c + 2
print(a, b, c)

打印的值为:10 16 9

python是先把右边的值全计算出来,再一一给左边。

查看完整回答
反对 回复 2017-05-03
  • 1 回答
  • 2 关注
  • 1963 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信