NameError:name' edit'没有定义

时间:2016-10-15 01:17:55

标签: python-3.x nameerror

我试图让用户说出他们想要使用哪个命令,但是当我在控制台中键入输入内容时,例如'编辑',它说,

  

inputr = str(输入(" new_employee,id_search,edit,pay_calc"))
  文件"",第1行,

     

NameError:name' 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()

1 个答案:

答案 0 :(得分:1)

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

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

$ python3 my_script.py

或者,您实际上想要使用Python 2; raw_input()提供与Python 3中input()相同的功能。

另外,弹出的另一件事: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)