为什么我的条件表达式 != 被忽略了?
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
但低于此数字时有效,如
- z != 196418
或大于此的数字,例如
- z!= 514229
我尝试了一种不同的方法 (z <= 317811),但它最多打印 514229。
感谢您的宝贵时间。
KD
您只是在测试替代斐波纳契数作为停止条件:317811 被遗漏。
一个解决方法是测试x
和y
。
您在一个循环中将 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 条件下进行比较
这是我使用 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
您只是在测试替代斐波纳契数作为停止条件:317811 被遗漏。
一个解决方法是测试x
和y
。
您在一个循环中将 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 条件下进行比较