Необходим цикл For, чтобы позволить пользователю выйти - PullRequest
0 голосов
/ 29 апреля 2019

Я довольно новичок в python, поэтому я знаю, что мой код немного неприглядный.По сути, я создаю фиктивную базу данных для поиска в классе.Я пытаюсь разрешить пользователю ввести «выход», чтобы выйти из приглашения, или просто ввести другой курс, который даст ему необходимую им прямую информацию.

Я также пытался выполнить цикл whileкак начальный цикл, но я немного озадачен тем, как я буду настраивать код.Пока это самое близкое, что у меня есть, но очевидно, что «перерыв» разрешит только одну дополнительную итерацию приглашения, а не позволит пользователю вводить информацию столько раз, сколько ему хотелось бы.

courseInfo = {"CS101": {"room": "3004", "Name": "Haynes", "Time": "8:00 a.m."}, "CS102": {"room": "4501", "Name": "Alvarado", "Time": "9:00 a.m."}, 
    "CS103": {"room": "6755", "Name": "Rich", "Time": "10:00 a.m."}, "NT110": {"room": "1244", "Name": "Burke", "Time": "11:00 a.m."}, 
"CM241": {"room": "1411", "Name": "Lee", "Time": "1:00 p.m."} }

courseInfo = {k.lower(): v for k, v in courseInfo.items()} 

for courseNumber in courseInfo:    
    courseNumber = input("\nEnter the course number: ").lower()
    print("\nThe course information for coourse # ",courseNumber, "is as follows:")
    print("Room #:", courseInfo[courseNumber] ["room"])
    print("Instructor: ",courseInfo[courseNumber] ["Name"])
    print("Time: ", courseInfo[courseNumber] ["Time"])
    done = input("\nEnter the course number or enter exit to leave: ")
    if done != "exit":
    print("\nThe course information for coourse # ",courseNumber, "is as follows:")
    print("Room #:", courseInfo[courseNumber] ["room"])
    print("Instructor: ",courseInfo[courseNumber] ["Name"])
    print("Time: ", courseInfo[courseNumber] ["Time"])
    break
else:
    print("Program terminated normally")
    break

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019
courseInfo = {"CS101": {"room": "3004", "Name": "Haynes", "Time": "8:00 a.m."}, "CS102": {"room": "4501", "Name": "Alvarado", "Time": "9:00 a.m."}, 
    "CS103": {"room": "6755", "Name": "Rich", "Time": "10:00 a.m."}, "NT110": {"room": "1244", "Name": "Burke", "Time": "11:00 a.m."}, 
"CM241": {"room": "1411", "Name": "Lee", "Time": "1:00 p.m."} }

# Use this to keep the loop going
exit_flag = False

courseNumber = input("\nEnter the course number: ").strip().upper()
while not exit_flag:
    # Always assume the user will enter something not in the dict
    course = courseInfo.get(courseNumber, None)
    if course:
        print("\nThe course information for course # ",courseNumber, "is as follows:")
        print("Room #:", courseInfo[courseNumber] ["room"])
        print("Instructor: ",courseInfo[courseNumber] ["Name"])
        print("Time: ", courseInfo[courseNumber] ["Time"])
    else:
        print("\nCourse not found")

    courseNumber = input("\nEnter another course number or enter exit to leave: ").strip().upper()
    if courseNumber == "EXIT":
        exit_flag = True

0 голосов
/ 29 апреля 2019

Использование цикла while:

def get_input():
    return input("Course nr or exit: ")

user_input = get_input()
while user_input.lower() != 'exit':
    print("Some info: ", courseInfo.get(user_input, "course not found"))
    user_input = get_input()

Это назначает вход для user_input, и хотя оно не равно 'exit', оно сначала распечатает информацию о Германии, а затем переназначит user_input для следующего входа, которое затем проверит снова.

Обратите внимание, что я изменил доступ к словарю. Используя dict.get(key[, default]), вы можете предотвратить KeyError с. Если первый аргумент dict.get(key[, default]) отсутствует в dict, он вернет None или аргумент default, если он задан. Если вы хотите напечатать некоторую информацию обо всех доступных курсах, когда пользователь вводит неверный номер курса, вы можете использовать оператор if, например:

if user_input in courseInfo:  # checks if courseInfo has a key user_input
    print("Some info:", courseInfo[user_input])  # if it does, print the relevant info
else:  # otherwise:
    print("These are the available courses:", ', '.join(courseInfo.keys()))  # print out the available courses (or whatever you want)

Также будьте осторожны, используя петли for ... else или while ... else. Этот синтаксис довольно уникален для Python и часто может привести к путанице, потому что есть два совершенно разумных, но взаимоисключающих предположения, которые программист может сделать, когда фактически введен else -блок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...