为什么我的条件表达式!=被忽略了?

时间:2015-12-31 09:57:04

标签: conditional-statements python-3.5

这是使用python 3.5

的斐波那契代码
z = 0
x = 0
y = 1

while z != 317811:
    x = x + y
    z = x
    print (z)
    y = x + y
    z = y
    print (z)

我想知道为什么在将条件设置为

时打印到无穷大
  • z!= 317811

但是当它低于这个数字时会起作用,如

  • z!= 196418

或大于此的数字

  • z!= 514229

我尝试了一种不同的方法(z <= 317811),但它打印到514229。

感谢您的时间。

KD

3 个答案:

答案 0 :(得分:1)

您只是测试备用Fibonnaci数字作为停止条件:317811错过了。

一种解决方法是测试 xy

答案 1 :(得分:1)

这只是逻辑问题 你打印两个

  

z!= 317811   对于这种情况   “Z”   在第一个z赋值中更新两次,即 z = x   但是“z”再次在第二次分配 z = y 时更新,然后“z”不满足条件( z!= 317811 )并且不等于317811但现在 514229

注意:它将始终适用于在第二步打印的数字,因为Z的这个值将在循环中的条件下进行比较

答案 2 :(得分:0)

您将z值增加两次循环,但只检查一次。

实际发生的事情是z随着斐波那契系列的增加而增加。 z的最后一个值是:

  • 196418
  • 317811
  • 514229

但是你每两次任务只检查一次停止条件。在这种情况下,您正在检查196418!= 317811和514229!= 317811,因此永远不会匹配它。

一种可能的解决方法是在首次打印后测试z!= 317811。即使在这种情况下,我也希望测试&#34;&lt;&#34;而不是&#34;!=&#34;