输入函数的NameError

时间:2016-01-31 06:09:02

标签: python

我想制作一个询问您年龄的程序然后从那里告诉您是否可以开车。如果用户输入字母或符号而不是数字,我希望它重新提出问题。

输入:

J

错误:

Python "Programs\welcome.py", line 3, in <module>
    age = str(input("How old are you?: "))
  File "<string>", line 1, in <module>
NameError: name 'J' is not defined

代码:

while True:
    age = str(input("How old are you?: "))
    if int(age) > 15 and age.isdigit:
        print ("Congradulations you can drive!")
    elif int(age) < 16 and age.isdigit:
        print ("Sorry you can not drive yet :(")
    else:
        print ("Enter a valid number")

2 个答案:

答案 0 :(得分:4)

您似乎在Python 2解释器中运行Python 3代码。

不同之处在于Python 3中的input()在Python 2中的行为类似于raw_input()

此外,age.isdigit并未像您预期的那样调用isdigit()函数。相反,它只是确认函数存在。

解决isdigit()问题后,您还有另一个错误:在确定它只包含数字之前,您正在执行int(age)转化。< / p>

Python 2程序

while True:
    age = raw_input("How old are you?: ")
    if age.isdigit() and int(age) > 15:
        print "Congradulations you can drive!"
    elif age.isdigit() and int(age) < 16:
        print "Sorry you can not drive yet :("
    else:
        print "Enter a valid number"

Python 3程序

while True:
    age = input("How old are you?: ")
    if age.isdigit() and int(age) > 15:
        print ("Congradulations you can drive!")
    elif age.isdigit() and int(age) < 16:
        print ("Sorry you can not drive yet :(")
    else:
        print ("Enter a valid number")

请注意,通过更改条件可以进一步改善这两种实现,但这超出了问题的范围。

答案 1 :(得分:0)

您正在寻找raw_input而不是input

input将评估它收到的任何字符串,这不是您打算发生的事情。