我对编程很陌生。我试图弄清楚如何检查用户输入(以字符串形式存储)是否为整数且不包含字母。我在论坛上检查了一些东西,最后得出了这个:
while 1:
#Set variables
age=input("Enter age: ")
correctvalue=1
#Check if user input COULD be changed to an integer. If not, changed variable to 0
try:
variable = int(age)
except ValueError:
correctvalue=0
print("thats no age!")
#If value left at 1, prints age and breaks out of loop.
#If changed, gives instructions to user and repeats loop.
if correctvalue == 1:
age=int(age)
print ("Your age is: " + str(age))
break
else:
print ("Please enter only numbers and without decimal point")
现在,这就像显示的那样工作并做我想要的事情(询问人们年龄,直到他们输入一个整数),但这对于这么简单的事情来说相当长。我试图找到一个,但我得到的数据太多,我还不明白。
有没有简单的简短方法,甚至是简单的功能?
答案 0 :(得分:2)
您可以根据需要删除不必要的correctvalue
变量和break
或continue
来缩短时间。
while True:
age=input("Enter age: ")
try:
age = int(age)
except ValueError:
print("thats no age!")
print ("Please enter only numbers and without decimal point")
else:
break
print ("Your age is: " + str(age))
答案 1 :(得分:1)
使用isdigit()
"34".isdigit()
>>> "34".isdigit()
True
>>> "3.4".isdigit()
False
>>>
这样的事情:
while True:
#Set variables
age=input("Enter age: ")
#Check
if not age.isdigit():
print("thats no age!")
continue
print("Your age is: %s" % age)
age = int(age)
break
答案 2 :(得分:0)
您的代码可以像这样缩短一点。我建议将correctvalue
变量从整数1
或0
更改为布尔True
或False
,但无论如何都是多余的。 continue
可用于根据需要重复循环。
while True:
age = input("Enter age: ")
try:
age = int(age)
except ValueError:
print("That's no age!")
print("Please enter only numbers and without decimal point")
continue
print ("Your age is: " + str(age))
break
答案 3 :(得分:0)
这适用于非负整数(即没有符号标记):
variable = ''
while True:
variable = input("Age: ")
if variable.isdigit():
break
else:
print("That's not an age!")
variable = int(variable)
这个想法是你不断循环,直到用户输入一个只包含数字的字符串(这就是isdigit
所做的)。