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

Why is my conditional expression != ignored?

这是我使用 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),但它最多打印 514229。

感谢您的宝贵时间。

KD

您只是在测试替代斐波纳契数作为停止条件:317811 被遗漏。

一个解决方法是测试xy

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

实际发生的是 z 随斐波那契数列增加。 z 的最后一个值是:

  • 196418
  • 317811
  • 514229

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

一个可能的修复方法是在第一次打印后测试 z != 317811 是否。即使在这种情况下我更愿意测试“<”而不是“!=”

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

z != 317811 for this condition "z" is updated twice once in first z assignment i.e z = x but "z" again get updated at second assignment z = y and then "z" is not sutisfying the condition(z != 317811) and not equal to 317811 but it is now 514229

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