问题描述
我试图返回一个数字,如果它是一个INT,并且在数字之间,则在输入字母时出现错误。 您还必须输入两次正确的值才能获得输入:
def get_number():
b = False
while b == False:
try:
n = (input('Please enter a 6 digit number'))
except ValueError:
continue
if n >= 100000 and n <= 1000000:
b = True
break
return n
if __name__ == '__main__':
get_number()
print get_number()
`
将输入更改为raw_input,如果有人输入字母,现在可以使用。 但是,当我输入正确的输入时,它将继续循环:
def get_number():
b = False
while b == False:
try:
n = (raw_input('Please enter a 6 digit number'))
except ValueError:
continue
if n >= 100000 and n <= 1000000:
b = True
break
return n
if __name__ == '__main__':
get_number()
print get_number()
1楼
您的代码有一些问题。
-
您可以只使用
input
来评估unser输入的内容,但这很危险; 最好使用raw_input
获取一个字符串,然后尝试将该字符串显式转换为int
-
另外, 如果您使用
input
,那么您必须捕获NameError
和SyntaxError
(可能还有更多)而不是ValueError
-
当前,您的
if
条件将允许输入7位数字(1000000); 另外,您可以使用比较链接简化条件 -
不需要布尔变量;
只是
break
或从循环return
- 您两次调用函数,并且仅打印第二次调用的结果
您可以尝试这样的事情:
def get_number():
while True:
try:
n = int(raw_input('Please enter a 6 digit number '))
if 100000 <= n < 1000000:
return n
except ValueError:
continue
if __name__ == '__main__':
print get_number()