NameError 时赋值操作

Assign an operation when NameError

我正在尝试让输入仅是一个数字,否则会返回一条错误消息并再次要求您输入该数字。 我想使用输入而不是 raw_input 如果它 returns 一个错误就像你输入 "h" 我想让它说错误并再次问这个问题。 但如果它是 +ve 数字或 -ve 数字,则继续。我只设法在 raw_input 上使用验证,而无法使用 Nameerror 异常。但它不适用于 -ve numbers

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

与其检查输入中的每个字符是否是数字而不是字母字符(特殊字符呢?),不如 try 将数字解析为 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 是正确的方法。 input in Python 2 会导致非常糟糕的事情。在 Python 3 中,input 与 Python 2 中的 raw_input 相同。

您可以尝试类似的方法:

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