如果字符串是Python 3中的数字,则更容易找到

时间:2014-05-02 13:22:31

标签: python python-3.x

我对编程很陌生。我试图弄清楚如何检查用户输入(以字符串形式存储)是否为整数且不包含字母。我在论坛上检查了一些东西,最后得出了这个:

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")

现在,这就像显示的那样工作并做我想要的事情(询问人们年龄,直到他们输入一个整数),但这对于这么简单的事情来说相当长。我试图找到一个,但我得到的数据太多,我还不明白。

有没有简单的简短方法,甚至是简单的功能?

4 个答案:

答案 0 :(得分:2)

您可以根据需要删除不必要的correctvalue变量和breakcontinue来缩短时间。

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变量从整数10更改为布尔TrueFalse,但无论如何都是多余的。 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所做的)。