2016-10-15 13 views
1

どのコマンドを使用したいのかをユーザーに伝えようとしていますが、 'edit'のようなコンソールで入力用に何かを入力すると、NameError:name 'edit'が定義されていません

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

あなたは、Python 2.xのでこれはPython 3.xのスクリプトを実行していることが表示されます:私は私のコードである人物のタイプは、次に編集する場合もしそうなら、ここでedit_employee()

を実行し、確認するためにチェックしています、input()メソッドが正しく解釈されていません。 Python 2.xコンテキストのinput()は、実際には入力を文字列として保存するのではなく、Pythonコードとしてのユーザー入力を実際に評価します。したがって、foo = input()があり、タイプが1 + 1の場合、fooは、文字列'1 + 1'ではなく、2の整数に設定されます。あなたの場合、'edit'を返す代わりに、定義していない変数名editを評価しようとしています。 Pythonの3を使用してスクリプトを実行することを確認し、これを解決する

$ python3 my_script.py 

それとも、あなたが実際にPythonの2を使用したいオフのチャンスに。あなたがiを定義していないので、edit_employee()は、例外が発生します:input()はまた、飛び出しもうひとつ

のPython 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

関連する問題