NameError: name 'edit' is not defined

NameError: name 'edit' is not defined

我试图让用户说出他们想使用哪个命令,但是当我在控制台输入一些东西时,比如 'edit',它说,

inputr=str(input("new_employee, id_search, edit, pay_calc"))
File "", line 1, in

NameError: name 'edit' is not defined

尽管'edit'不是一个变量,而是一个字符串。我正在检查此人是否键入编辑,如果是,运行 edit_employee()

这是我的代码:

name=[]    
hours=[]    
payrate=[]

def new_employee():
    employeenum=input("How many new employees?")
    for i in range(employeenum):
        emname=input("Enter the name of employee "+str(i)+'...')
        empayrate=input("Enter the payrate per hour of employee "+str(i)+'...')
        name.insert(i,emname)
        hours.insert(i,emhours)    

def employee_python_id_search():
    search=lower(input("Enter name of employee to search..."))
    for i in range(name):
        if search==name[i]:
            print(name,':',str(i))            

def edit_employee():
    editnum=input("Enter employee python id number")
    empayrate=input("Enter the payrate per hour of employee "+str(i)+'...')
    payrate.append(editnum)    

def pay_calculator():
    search=lower(input("Enter name of employee to search..."))
    emhours=input("Enter the hours worked of employee "+str(i)+'...')
    for i in range(name):
        if search==name[i]:
            print(name[i],'made',str(payrate[i]))

inputr=str(input("new_employee, id_search, edit, pay_calc"))

def checknew():
    if inputr=="new_employee":
        new_employee()

def checkid():
    if inputr=="id_search":
        employee_python_id_search()

def checkedit():
    if inputr=="edit":
        edit_employee()

def checkcalc():
    if inputr=="pay_calc":
        pay_calculator()

def check():
    checknew()
    checkid()
    checkedit()
    checkcalc()

check()

看来您正在使用 Python 2.x 运行 宁此 Python 3.x 脚本,而 input() 方法不是被正确解释。 Python 2.x 上下文中的 input() 实际上将用户输入计算为 Python 代码,而不是将该输入保存为字符串。因此,如果您有 foo = input(),并且键入 1 + 1foo 将被设置为等于整数 2 而不是字符串 '1 + 1'。在您的情况下,它不是返回 'edit',而是尝试评估您尚未定义的变量名称 edit

要解决此问题,请确保 运行 您的脚本 Python 3:

$ python3 my_script.py

或者,如果您真的想使用 Python 2; raw_input() 提供与 input() 在 Python 中相同的功能 3.

此外,弹出的另一件事:edit_employee() 将引发异常,因为您尚未定义 i。相反,您可能想在此处使用 editnum。您可能还想将 empayrate 附加到 payrate 列表,而不是 editnum:

def edit_employee():
    editnum=input("Enter employee python id number")
    empayrate=input("Enter the payrate per hour of employee "+str(editnum)+'...')
    payrate.append(empayrate)