Python程序中的'NameError'

时间:2016-03-08 18:19:23

标签: python

我正在学校开设一个程序,并且遇到了这个问题,这个问题真的与我有关,可能是因为我对Python和编程本身很苛刻。

无论如何,这是导致问题的代码部分:

# A function used to determine a 'try' and 'except' loop for an input of a integer data type. It also adds boundaries for the integer variables in this program        
def tryAndExceptInputInt(text):
while True:
    try:
        variable = int(input(text))
        if variable == speedLimit:
            if variable > 120 or variable < 5:
                raise ValueError("Please input a suitable speed limit")
            else:
                break
        elif variable == distance:
            if variable < 1:
                raise ValueError("Please input a suitable distance")
            else:
                break
        elif variable == vehicles:
            if variable <= 0:
                raise ValueError("Please input a valid number of vehicle(s)")
            else:
                break  
        elif variable == time1 or variable == time2:
            if len(variable) != 4:
                raise ValueError("Please input a suitable entrance/leaving time")
            else:
                variable = int(variable)
                if variable >= 2400 or variable < 0000:
                    raise ValueError("Please input a suitable entrance/leaving time")
                else:
                    break
        else:
            break
    # This statement keeps looping until the user inputs the suitable data type
    except ValueError:
        print("Please input a value which is an integer\n")
    else:
        return variable

# MAIN PROGRAM


# A function made to loop 'try' and 'except' so that the user's input would be the desired data type as well as variable
speedLimit = tryAndExceptInputInt("Enter the speed limit in the monitored area (mph): ")

以下是运行此部分代码时收到的错误消息:

"In 'tryAndExceptInputInt', 'if variable == speedLimit:', NameError: name 'speedLimit' is not defined

有人可以用我创建的'tryAndExceptInputInt'函数的正确版本回答我,谢谢;-)

1 个答案:

答案 0 :(得分:-7)

摆脱speedLimit = tryAndExceptInputInt("Enter the speed limit in the monitored area (mph): ") 并替换为

speed = input("speedLimit = tryAndExceptInputInt("Speed (MPH): ")
tryAndExceptInputInt(int(speed))

并将def tryAndExceptInputInt(text):替换为

def tryAndExceptInputInt(speedLimit):