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 + 1
,foo
将被设置为等于整数 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)
我试图让用户说出他们想使用哪个命令,但是当我在控制台输入一些东西时,比如 'edit',它说,
inputr=str(input("new_employee, id_search, edit, pay_calc"))
File "", line 1, inNameError: 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 + 1
,foo
将被设置为等于整数 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)