检查用户输入是否满足两个条件
Checking user input to see if it satisfies two conditions
作为更大的菜单驱动程序的一部分,我想测试用户输入以查看该输入是否:
是一个整数 AND
如果是整数,如果在1到12的范围内,包括在内。
number = 0
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
except ValueError:
print("Invlaid input, please try again >>> ")
continue
else:
if not (1<= number <=12):
print("Need a whole number in range 1-12 >>> ")
continue
else:
print("You selected:",number)
break
我正在使用 Python 3.4.3,想知道是否有更简洁(更少的行,更好的性能,更多 "Pythonic",例如)的方法来实现这个?提前致谢。
我认为您不需要整个 try
/except
块。一切都可以适应一个条件:
number = raw_input("Enter a whole number between 1 and 12 >>> ")
while not (number.isdigit() and type(eval(number)) == int and 1<= eval(number) <=12):
number = raw_input("Enter a whole number between 1 and 12 >>> ")
print("You selected:",number)
除了一个 if 之外你不需要任何东西:
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
if 1 <= number <= 12:
print("You selected:", number)
break
print("Need a whole number in range 1-12 >>> ")
except ValueError:
print("Invlaid input, please try again >>> ")
错误的输入将意味着您直接进入例外,如果输入良好并且在您可接受的范围内,print("You selected:", number)
将被执行然后我们中断否则print("Need a whole number in range 1-12 >>> ")
将是如果超出范围则执行。
我觉得你的代码很不错。小修正(拼写、缩进、不必要的 continue
s):
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
except ValueError:
print("Invalid input, please try again >>> ")
else:
if 1 <= number <= 12:
print("You selected: {}".format(number))
break
else:
print("Need a whole number in range 1-12 >>> ")
使用 isdigit() 检查非数字字符。那么你不应该需要捕捉异常。只有一个 if
并且它使用运算符短路来避免在 blah 包含非数字时执行 int(blah) 。
while True:
num_str = raw_input("Enter a whole number between 1 and 12 >>> ")
if num_str.isdigit() and int(num_str) in range(1,13):
print("You selected:",int(num_str))
break
else:
print("Need a whole number in range 1-12 >>> ")
作为更大的菜单驱动程序的一部分,我想测试用户输入以查看该输入是否: 是一个整数 AND 如果是整数,如果在1到12的范围内,包括在内。
number = 0
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
except ValueError:
print("Invlaid input, please try again >>> ")
continue
else:
if not (1<= number <=12):
print("Need a whole number in range 1-12 >>> ")
continue
else:
print("You selected:",number)
break
我正在使用 Python 3.4.3,想知道是否有更简洁(更少的行,更好的性能,更多 "Pythonic",例如)的方法来实现这个?提前致谢。
我认为您不需要整个 try
/except
块。一切都可以适应一个条件:
number = raw_input("Enter a whole number between 1 and 12 >>> ")
while not (number.isdigit() and type(eval(number)) == int and 1<= eval(number) <=12):
number = raw_input("Enter a whole number between 1 and 12 >>> ")
print("You selected:",number)
除了一个 if 之外你不需要任何东西:
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
if 1 <= number <= 12:
print("You selected:", number)
break
print("Need a whole number in range 1-12 >>> ")
except ValueError:
print("Invlaid input, please try again >>> ")
错误的输入将意味着您直接进入例外,如果输入良好并且在您可接受的范围内,print("You selected:", number)
将被执行然后我们中断否则print("Need a whole number in range 1-12 >>> ")
将是如果超出范围则执行。
我觉得你的代码很不错。小修正(拼写、缩进、不必要的 continue
s):
while True:
try:
number = int(input("Enter a whole number between 1 and 12 >>> "))
except ValueError:
print("Invalid input, please try again >>> ")
else:
if 1 <= number <= 12:
print("You selected: {}".format(number))
break
else:
print("Need a whole number in range 1-12 >>> ")
使用 isdigit() 检查非数字字符。那么你不应该需要捕捉异常。只有一个 if
并且它使用运算符短路来避免在 blah 包含非数字时执行 int(blah) 。
while True:
num_str = raw_input("Enter a whole number between 1 and 12 >>> ")
if num_str.isdigit() and int(num_str) in range(1,13):
print("You selected:",int(num_str))
break
else:
print("Need a whole number in range 1-12 >>> ")