我试图让这个程序,每次当用户输入一个数字,如果数字在0和2之间,它将返回用户输入的数字。否则,它将继续打印语句&;Enter selection: &;到控制台,直到用户输入范围内的值为止。我的问题是,我的while循环似乎不工作,所以每次无论我输入什么值(即使它在范围0,2之外),该值仍然返回。
下面是我现有的代码:def get_user_option_input():
number = input('Please enter a number: ')
num = int(number)
while not num > 0 and num < 2:
print('Enter selection: ')
return num
number = get_user_option_input()
print(number)
希望有人能帮我解决这个问题。感谢!
您可以这样做:
def get_user_option_input():
# Set num to something that is not in the valid range
num = -1
# Do until num is between 0 and 2
while not (num > 0 and num < 2):
# Get user input
number = input('Please enter a number: ')
num = int(number)
return num
number = get_user_option_input()
print(number)
注意()
在not (num > 0 and num < 2)
中的重要性。现在not
和num > 0 and num < 2
都是负的。与之前一样,not
只否定了boolean
条件的num > 0
部分。
如果用户输入的第一个数字在范围之外,那么它将永远运行print('Enter selection: ')
,因为num
在循环内永远不会改变。要解决这个问题,您需要将print('Enter selection: ')
更改为num = int(input('Enter selection: '))
。同时,将while not num > 0 and num < 2:
更改为while not (num > 0 and num < 2):
。否则,not
只否定num > 0
。通过添加括号,not
否定了num > 0
和num < 2
。