Python 在发生NameError时分配操作

Python 在发生NameError时分配操作,python,python-2.x,nameerror,Python,Python 2.x,Nameerror,我试图将输入设置为仅为一个数字,或者返回一条错误消息,并再次要求您输入该数字。 我想使用输入而不是原始输入,如果它返回一个错误,比如输入“h”,我想让它说错误,然后再问这个问题。 但如果它是+ve数或-ve数,则继续。我只在原始输入上使用验证进行了管理,使用Nameerror异常无法实现任何目标。但它不适用于-ve数字 def numbercheck(): Answercheck = False inputanswer = raw_input("What is your num

我试图将输入设置为仅为一个数字,或者返回一条错误消息,并再次要求您输入该数字。 我想使用输入而不是原始输入,如果它返回一个错误,比如输入“h”,我想让它说错误,然后再问这个问题。 但如果它是+ve数或-ve数,则继续。我只在原始输入上使用验证进行了管理,使用Nameerror异常无法实现任何目标。但它不适用于-ve数字

def numbercheck():
    Answercheck =  False
    inputanswer = raw_input("What is your number?")
    while inputanswer.isdigit() == True and any(c.isalpha() for c in inputanswer) == False:
        print "success"
        return
    else:
        if inputanswer.isdigit() == True and any(c.isalpha() for c in inputanswer) == False:
            print "success"
            return
        else:
            print "INVALID NUMBER- Please try again: "
            numbercheck()

与其检查输入中的每个字符是否是数字而不是字母字符(特殊字符如何?),不如尝试将数字解析为
int
,如果失败,请重试

def numbercheck():
    while True:
        try:
            inputanswer = raw_input("What is your number?")
            as_number = int(inputanswer)
            print "success"
            return as_number
        except ValueError:
            print "INVALID NUMBER- Please try again: "

而且,
raw_input
是正确的选择输入可能会导致非常糟糕的事情。在Python3中,
input
的作用与Python2中的
raw\u input
相同。

您可以尝试以下操作:

if inputanswer[0]=="+" or inputanswer[0]=="-":
    inputanswer = inputanswer[1:]