我试图让用户说出他们想要使用哪个命令,但是当我在控制台中键入输入内容时,例如'编辑',它说,
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()
答案 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)