2

何らかの理由で c をタップすると、「コース」が定義されていないと表示されます。

メニューの選択肢を入力してください... [コース]、[i]インストラクター、[時間]: c トレースバック (最新の呼び出しが最後):

行 15、メイン print(create_info(courses)) NameError: グローバル名 'courses' が定義されていません

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()
4

2 に答える 2

5

coursesローカル変数なcreate_infoので、からは見えません。おそらく、そこでmain使用するつもりだったのでしょうcourseInfo

また、パラメータを取らないように定義されているときに、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()
于 2012-12-18T23:51:14.083 に答える
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)                             # <<<

でマークされた 2 行を変更しました# <<<

于 2012-12-18T23:51:16.057 に答える