2014-05-06 87 views
0

我是新手编程,并试图使用户输入接受整数和字符串。我已经尝试了以下编码..但不知道我错了哪里。有什么建议么?用户输入接受str和int(python)

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异常:无效字面对于int()与基体10:

我猜测有一个ValueError因为我已经使用了可变noAdults与因而isalpha并且因为它是在一个int正在错误?

+0

一个完全工作的版本,目前的代码不会如果它有一个字母,再次检查新的'noAdults'。 – Leigh

回答

0

它抛出异常你处理的字符串输入的不好的情况下之前,它无法在第一行。在尝试int()之前,您可以检查isalpha(),或者您可以捕获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

+0

我试图检查isalpha()之前做int ..我得到的是alpha是返回错误消息,但我无法得到int返回..仍然返回一个错误。我更新了我的代码。 – Meg

+0

您需要像chepner的代码一样将其转换为'int'。 – Leigh

+0

我不明白你的意思。你在谈论尝试方法吗? noAdults = int(noAdults) – Meg

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

我试过这个,但它仍然出现错误。 – Meg

+0

这确实有效。但是,输入新号码时没有提示“号码必须是有效的”提示信息。我试图添加它,但我很困惑。 – Meg

+0

我还没有搬到Python 3,所以我仍然习惯于使用'print'函数而不是'print'语句。 – chepner