2012-12-18 121 views
2

由於某些原因,當我點擊c時,它會給我'課程'未定義。全局名稱未定義Python 3

請輸入一個菜單選項... [C] ourses,[I] nstructors,[T]輸入法:C 回溯(最近通話最後一個):

線15條,主 打印( create_info(課程)) NameError:全局名稱「課程」沒有定義

def main(): 
    courseInfo = create_info() 

    print('Please enter a menu choice...') 
    choice = input('[c]ourses, [i]nstructors, [t]imes: ').upper() 

    if choice == 'C': 
     print(create_info(courses)) 


def create_info(): 
    courses = {'CS101':'3004', 'CS102':'4501', 'CS103':'6755', 'NT110':'1244', 
       'CM241':'1411'} 
    instructors = {'CS101':'Haynes', 'CS102':'Alvarado', 'CS103':'Rich', 
        'NT110':'Burke', 'CM241':'Lee'} 
    times = {'CS101':'8:00 a.m.', 'CS102':'9:00 a.m.', 'CS103':'10:00 a.m.', 
      'NT110':'11:00 a.m.', 'CM241':'1:00 p.m.'} 

    return courses, instructors, times 

main() 

回答

3

變化main()像這樣:

def main(): 
    courses, instructors, times = create_info() # <<< 

    print('Please enter a menu choice...') 
    choice = input('[c]ourses, [i]nstructors, [t]imes: ').upper() 

    if choice == 'C': 
     print(courses)        # <<< 

我改變了標有# <<<的兩條線。

5

coursescreate_info一個當地變量,因此它是不可見從main。也許你的意思使用01那裏有。

而且,你想傳遞一個參數來create_info,當它被定義爲不帶參數

你可以做create_info返回一個字典是這樣

def main(): 
    courseInfo = create_info() 

    print('Please enter a menu choice...') 
    choice = input('[c]ourses, [i]nstructors, [t]imes: ').upper() 

    if choice == 'C': 
     print(courseInfo["courses"]) 


def create_info(): 
    courses = {'CS101':'3004', 'CS102':'4501', 'CS103':'6755', 'NT110':'1244', 
       'CM241':'1411'} 
    instructors = {'CS101':'Haynes', 'CS102':'Alvarado', 'CS103':'Rich', 
        'NT110':'Burke', 'CM241':'Lee'} 
    times = {'CS101':'8:00 a.m.', 'CS102':'9:00 a.m.', 'CS103':'10:00 a.m.', 
      'NT110':'11:00 a.m.', 'CM241':'1:00 p.m.'} 

    return dict(courses=courses, instructors=instructors, times=times) 

main()