考虑以下代码:
def meh():
try:
n=int(input("\nEnter any number : "))
except ValueError:
n=int(input("\nERROR!! Kindly enter a number only! : "))
我试图避免这样的输出:
def meh():
try:
n=int(input("\nEnter any number : "))
except ValueError:
n=int(input("\nERROR!! Kindly enter a number only! : "))
基本上,我的目标是仅实现一个整数,而不管我输入字符串值多少次。 如果你们让我知道这样做的方式,我将非常感激!
答案 0 :(得分:4)
尝试一下:
def meh():
try:
n=int(input("\nEnter any number : "))
except ValueError:
print('ERROR!! Kindly enter a number only!')
meh()
以前,当函数第二次获得非整数类型的字符串时,它将再次抛出相同的ValueError
,因为try
部分中没有其他except
块。因此,只需在except
块中再次调用该函数,然后再打印伪错误即可。
输出:
>>> meh()
Enter any number : d
ERROR!! Kindly enter a number only!
Enter any number :
ERROR!! Kindly enter a number only!
Enter any number : a
ERROR!! Kindly enter a number only!
Enter any number : g
ERROR!! Kindly enter a number only!
Enter any number : dsfdsg
ERROR!! Kindly enter a number only!
Enter any number : 4243
答案 1 :(得分:1)
我同意其他答案,但是将代码包含在try / except中并不是一个好主意。
def meh():
n = input("Enter any number:")
if not n.isdigit():
raise ValueError('ERROR!! Kindly enter a number only!')
return int(n)
然后您可以这样称呼
if __name__ == "__main__":
while True:
try:
j=meh()
print ('You entered ', j)
break
except ValueError as e:
print (e)
continue
您将获得如下输出:
[test@localhost google_fin]$ python ~/test.py
Enter any number:k
ERROR!! Kindly enter a number only!
Enter any number:k
ERROR!! Kindly enter a number only!
Enter any number:k
ERROR!! Kindly enter a number only!
Enter any number:k
ERROR!! Kindly enter a number only!
Enter any number:2
You entered 2