用户输入接受str和int(python)

时间:2014-05-06 04:11:43

标签: python-3.x

我是编程新手并试图让用户输入同时接受整数和字符串。我尝试了以下编码..但不知道我哪里出错了。有什么建议吗?

    noAdults = input("Please enter the number of adults:")
    while noAdults.isalpha():
        print("Number must be valid and >= 0")
    if noAdults.isdigit() and noAdults < 0:
        print("Error")
        noAdults = input("Please enter the number of adults:")

ValueError:基数为10的int()的无效文字:

我猜测有一个ValueError,因为我已经将变量noAdults与isalpha一起使用并且因为它在int中而发出错误?

2 个答案:

答案 0 :(得分:2)

您需要验证输入字符串是否为有效整数,然后才能检查它是否为非负

while True:        
    noAdults = input("Please enter the number of adults:")
    try:
        noAdults = int(noAdults)
    except ValueError:
        print("Not a valid number")
        continue
    if noAdults >= 0:
        break
    else:
        print("Number must be >= 0")

答案 1 :(得分:0)

在处理字符串输入的错误情况之前抛出异常,它在第一行失败。您可以在尝试isalpha()之前检查int(),或者可以捕获ValueError例外。

要展开chepner's solution,请使用一些额外的打印行来向您展示正在发生的事情:

while True:
    noAdults = input("Please enter the number of adults:")
    try:
        noAdults = int(noAdults)
    except ValueError:
        print("Not a valid number")
        continue
    if noAdults >= 0:
        break
    else:
        print("Not greater than 0")

print(noAdults)

这是Python 3中一个完全正常工作的版本。