【问题标题】:NameError: name 'edit' is not definedNameError:名称“编辑”未定义
【发布时间】:2016-10-15 01:17:55
【问题描述】:

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

inputr=str(input("new_employee, id_search, edit, pay_calc"))
文件“”,第 1 行,在

NameError:名称“编辑”未定义

即使“编辑”不是一个变量,而是一个字符串。我正在检查人员类型是否编辑,如果是,请运行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-3.x nameerror


    【解决方案1】:

    您似乎正在使用 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() 提供与 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)
    

    【讨论】:

    • 非常感谢。这真的很有帮助
    • @IAmADoctor 是的,太好了!在这种情况下不要忘记接受答案;)
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2019-01-26
    • 2021-10-05
    • 2017-08-16
    相关资源
    最近更新 更多