2016-10-15 3 views
1

나는 사용자들이 사용하고자하는 명령을하지만 '편집', 그것이 말하는 같은 콘솔의 입력에 뭔가를 입력 할 때 어떤 말을 수 있도록 노력하고,나가서 설명하자면 NameError는 : 이름 '편집'는 정의되지

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

NameError: name 'edit' is not defined

'edit'는 변수가 아니지만 문자열입니다.

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

당신이 파이썬 2.x는이 파이썬 3.x의 스크립트를 실행하는 것으로 나타납니다 : 내가 만약 그렇다면 사람의 유형은 다음 편집하는 경우, 참조 여기 edit_employee()

를 실행하는 확인하고 나의 코드입니다 , input() 메서드가 올바르게 해석되지 않습니다. input()은 Python 2.x 컨텍스트에서 실제로 입력을 문자열로 저장하는 대신 사용자의 입력을 Python 코드로 평가합니다. 따라서 foo = input()이 있고 1 + 1을 입력하면 이 아닌 2과 같게 foo이 설정됩니다. 귀하의 경우에는 'edit'을 반환하는 대신 정의하지 않은 변수 이름 edit을 평가하려고합니다.

이 문제를 해결하려면 만들어 파이썬 3로 스크립트를 실행해야합니다 :

$ python3 my_script.py 

또는 당신이 실제로 파이썬 2를 사용하려면 오프 기회에; 당신이 i을 정의하지 않았기 때문에 edit_employee()는 예외를 발생합니다 : input()는 또한, 튀어 나올 때 한 가지

파이썬 3에서와 같이 raw_input() 같은 기능을 제공합니다. 대신 여기에 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) 
+0

정말 감사 : 당신은 또한 아마하지 editnum에서, payrate 목록에 empayrate를 추가합니다. 이것은 정말 도움이 – IAmADoctorYes

+0

@IAmADoctorYes, 좋아! 이 경우 답변을 수락하는 것을 잊지 마십시오.) – elethan