Обновление словарей, расположенных в других функциях - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь добавить элементы в словарь, но так как словарь находится в другой функции, они никогда не обновляются, когда я использую мою функцию addCourses ().

При вызове функции addCourses () я добавляюфункции, которые содержат словари в качестве аргументов в своих перспективных местах, но он не обновляет исходные словари, поэтому, когда я пытаюсь получить getCourseInfo для моего нового курса, его там нет.

def courseRooms():
    rooms = {'CS101': '3004', 'CS102': '4501', 'CS103': '6755', 'NT110': '1244', 'CM241': '1411'}
    return rooms


def courseInstructors():
    instructors = {'CS101': 'Haynes', 'CS102': 'Alvarado', 'CS103': 'Rich', 'NT110': 'Rich', 'CM241': 'Lee'}
    return instructors


def courseTimes():
    times = {'CS101': '8:00am', 'CS102': '9:00am', 'CS103': '10:00am', 'NT110': '11:00am', 'CM241': '1:00pm'}
    return times


def getCourseInfo(rooms, instructors, times, course):
    if course in rooms:
        print('Course:\t\t', course)
        print('Room:\t\t', rooms.get(course))
        print('Instructor:\t', instructors.get(course))
        print('Time:\t\t', times.get(course))
    else:
        print("Course number not found. Please try again.")


def addCourse(room, instructor, time):
    course = input("Please enter the course number you are trying to add: ").upper()
    room[course] = 'null'
    roomNumber = input("Please enter the room number for that course: ")
    room[course] = roomNumber
    teacher = input("Please enter the instructor for that course: ").title()
    instructor[course] = teacher
    meetingTime = input("Please enter the meeting time for that course: ")
    time[course] = meetingTime
    print("Thank you. That course has been added.")

Словари необновляется вообще или они просто не обновляют оригинальные? Это не дает мне и ошибки, но это не работает, как задумано.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

rooms является локальной переменной в функции courseRooms(), вы не можете получить к ней доступ из функции из-за области действия. Вы можете назначить его вне функции, чтобы другие функции могли получить к нему доступ. Например,

rooms = {'CS101': '3004', 'CS102': '4501', 'CS103': '6755', 'NT110': '1244', 'CM241': '1411'}
instructors = {'CS101': 'Haynes', 'CS102': 'Alvarado', 'CS103': 'Rich', 'NT110': 'Rich', 'CM241': 'Lee'}
times = {'CS101': '8:00am', 'CS102': '9:00am', 'CS103': '10:00am', 'NT110': '11:00am', 'CM241': '1:00pm'}

def getCourseInfo(course):
    if course in rooms:
        print('Course:\t\t', course)
        print('Room:\t\t', rooms.get(course))
        print('Instructor:\t', instructors.get(course))
        print('Time:\t\t', times.get(course))
    else:
        print("Course number not found. Please try again.")


def addCourse():
    course = input("Please enter the course number you are trying to add: ").upper()
    room[course] = 'null'
    roomNumber = input("Please enter the room number for that course: ")
    room[course] = roomNumber
    teacher = input("Please enter the instructor for that course: ").title()
    instructor[course] = teacher
    meetingTime = input("Please enter the meeting time for that course: ")
    time[course] = meetingTime
    print("Thank you. That course has been added.")
0 голосов
/ 08 ноября 2019

Итак, чтобы сделать эту работу, мне нужно было добавить словари в мою функцию main (), а затем передать их в качестве аргументов друг другу, используя их. По сути, мне приходилось передавать их в каждую функцию, в которой использовались словари, но в моем примере я показывал только функцию getCourseInfo ().
Пример:

def main():
    try:
        rooms = {'CS101': '3004', 'CS102': '4501', 'CS103': '6755', 'NT110': '1244', 'CM241': '1411'}
        instructors = {'CS101': 'Haynes', 'CS102': 'Alvarado', 'CS103': 'Rich', 'NT110': 'Rich', 'CM241': 'Lee'}
        times = {'CS101': '8:00am', 'CS102': '9:00am', 'CS103': '10:00am', 'NT110': '11:00am', 'CM241': '1:00pm'}

        choice = file.mainMenu()
        while choice != 3:
            if choice == '1':
                course = input("What course number would you like to see info for?: ").upper()
                file.getCourseInfo(rooms, instructors, times, course)

            elif choice == '2':
                course, roomNumber, teacher, time = file.addCourse(rooms, instructors, times)
                rooms[course] = roomNumber
                instructors[course] = teacher
                times[course] = time
                print("Thank you. That course has been added.")

            else:
                print("Thank you. Exiting...")
                exit()

            choice = file.mainMenu()

    except Exception as err:
        print('Error in main: ', err)


def getCourseInfo(rooms, instructors, times, course):
    if course in rooms:
        print('Course:\t\t', course)
        print('Room:\t\t', rooms.get(course))
        print('Instructor:\t', instructors.get(course))
        print('Time:\t\t', times.get(course))
    else:
        print("Course number not found. Please try again.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...