虽然循环行为怪异

时间:2016-10-29 23:22:23

标签: python

我已获得以下代码:

fn = input("Choose a function(1, 2, 3, 4, 5, other(quit)): ");
while (not(fn > '5' or fn < '1')):
    print("hello world");

大部分时间都可以使用。例如,如果我输入54或一些疯狂的数字,它将永远不会打印&#34; hello world&#34;。
但是,当我输入45时,它确实进入了循环 这是为什么?

3 个答案:

答案 0 :(得分:0)

Python不会以半冒号结束语句

whilenot都不需要括号。

你需要比较数字,而不是字符串。但是等等,input在Python3中返回一个字符串,所以你也需要int()

fn = input("Choose a function(1, 2, 3, 4, 5, other(quit)): ")
if fn == 'quit':
    # break out of this choose a function prompt
else: 
    while int(fn) in range(1, 5 + 1): # +1 because non-inclusive ranges
       print("hello world")

而且,这将是一个有效输入的无限循环,所以只需为那个

做好准备

答案 1 :(得分:-1)

您使用的是字符串而不是数字('5''1')。字符串比较由单个字符和字符“4”完成。在&#39; 45&#39;算得少于字符&#39; 5&#39;。

>>> ord('4')
52
>>> ord('5')
53

答案 2 :(得分:-1)

你可以写一下来解决它:

fn = input("Choose a function(1, 2, 3, 4, 5, other(quit)): ");
while str(fn) + ',' in '1,2,3,4,5,':
    print("hello world");