Dictionary 如何查找和打印与用户输入匹配的字典键/值?

Dictionary 如何查找和打印与用户输入匹配的字典键/值?,dictionary,input,key-value,python-3.8,Dictionary,Input,Key Value,Python 3.8,我需要打印一个匹配用户输入的字典值。例如,如果用户输入课程编号CS101,则输出如下: The details for CS101 are: Room: 3004 Instructor: Haynes Time: 8:00 a.m. 但是,如果用户输入的课程号不正确/无效,我需要打印一条消息,让他们知道: CS101 is an invalid course number. 我尝试了if,for循环,以及while循环。问题是,每次我打印课程信息时,由于KeyError,无效课程号消息不会显

我需要打印一个匹配用户输入的字典值。例如,如果用户输入课程编号
CS101
,则输出如下:

The details for CS101 are:
Room: 3004
Instructor: Haynes
Time: 8:00 a.m.
但是,如果用户输入的课程号不正确/无效,我需要打印一条消息,让他们知道:

CS101 is an invalid course number.
我尝试了
if
for循环
,以及
while循环
。问题是,每次我打印课程信息时,由于KeyError,无效课程号消息不会显示。另一方面,如果我碰巧“修复”了错误消息,那么课程号信息将不会打印出来,而是返回NameError/TypeError。 老实说,我已经为此奋斗了一段时间,我觉得我要么分配不正确,要么打印不正确。但是我是一个初学者,我还没有很好地掌握Python,这就是为什么我要寻求帮助。 不幸的是,我不允许创建一个完整的字典来将所有内容分组(这对我来说更容易),但我必须创建3个字典。 代码如下:

room = {}

room["CS101"] = "3004"
room["CS102"] = "4501"
room["CS103"] = "6755"
room["NT110"] = "1244"
room["CM241"] = "1411"

instructor = {}

instructor["CS101"] = "Haynes"
instructor["CS102"] = "Alvarado"
instructor["CS103"] = "Rich"
instructor["NT110"] = "Burkes"
instructor["CM241"] = "Lee"

time = {}

time["CS101"] = "8:00 a.m."
time["CS102"] = "9:00 a.m."
time["CS103"] = "10:00 a.m."
time["NT110"] = "11:00 a.m."
time["CM241"] = "1:00 p.m."

def info():
    print(f'College Course Locater Program')
    print(f'Enter a course number below to get information')

info()
get_course = input(f'Enter course number here: ')
print(f'----------------------------------------------')

course_num = get_course
number = course_num
name = course_num
meeting = course_num

if number in room:
    if name in instructor:
        if meeting in time:
            print(f'The details for course {get_course} are: ')
            print(f'Room: {number["room"]}')
            print(f'Instructor: {name["instructor"]}')
            print(f'Time: {meeting["time"]}')
else:
    print(f'{course_num} is an invalid course number.')
我也尝试过用这种风格格式化词典:

time_dict = {
    "CS101": {
        "Time": "8:00 a.m."
    },
    "CS102": {
        "Time": "9:00 a.m."
    },
    "CS103": {
        "Time": "10:00 a.m."
    },
    "NT110": {
        "Time": "11:00 a.m."
    },
    "CM241": {
        "Time": "1:00 p.m."
    },
}

我提前感谢所有对解决方案有建议、答案或建议的人。

这里的代码是不必要的,因为您基本上是将4个变量都设置为相同的值:

course_num = get_course
number = course_num
name = course_num
meeting = course_num 
这里的代码不起作用,因为您试图在一个不存在的字典中找到字符串为“room”的键,之后的其他行也是如此

print(f'Room: {number["room"]}')
print(f'Instructor: {name["instructor"]}')
print(f'Time: {meeting["time"]}')
我将上面的代码替换为:

print(f'Room: {room[get_course]}')
print(f'Instructor: {instructor[get_course]}')
print(f'Time: {time[get_course]}')
这将在字典变量room中搜索key get_course(例如“CS101”),并返回对应于该键的值。其他行也会发生同样的情况,除了字典指导者和字典时间

以下是最终代码:

room = {}

room["CS101"] = "3004"
room["CS102"] = "4501"
room["CS103"] = "6755"
room["NT110"] = "1244"
room["CM241"] = "1411"

instructor = {}

instructor["CS101"] = "Haynes"
instructor["CS102"] = "Alvarado"
instructor["CS103"] = "Rich"
instructor["NT110"] = "Burkes"
instructor["CM241"] = "Lee"

time = {}

time["CS101"] = "8:00 a.m."
time["CS102"] = "9:00 a.m."
time["CS103"] = "10:00 a.m."
time["NT110"] = "11:00 a.m."
time["CM241"] = "1:00 p.m."

def info():
    print(f'College Course Locater Program')
    print(f'Enter a course number below to get information')

info()
get_course = input(f'Enter course number here: ')
print(f'----------------------------------------------')


if get_course in room and get_course in instructor and get_course in time:
    print(f'The details for course {get_course} are: ')
    print(f'Room: {room[get_course]}')
    print(f'Instructor: {instructor[get_course]}')
    print(f'Time: {time[get_course]}')
else:
    print(f'{get_course} is an invalid course number.')
下面是一个输入为“CS101”的测试:


你也可以这样做。这可能需要更少的时间。该功能不是很有组织性,尝试组织一点,它应该工作。我还不太熟悉在这里添加代码

course_info = {
'CS101': {
    'Room': '3004',
    'Instructor': 'Haynes',
    'Time': '8:00 am'
},
'CS102': {
    'Room': '4501',
   'Instructor': 'Alvarado',
   'Time': '9:00 a.m.'
},
'CS103': {
    'Room': '6755',
    'instructor': 'Rich',
    'Time:': '10:00 am',
},
'NT110': {
    'Room': '1244',
    'instructor': 'Burkes',
    'Time': '11:00 am'
},
'CM241': {
    'Room': '1411',
    'Instructor': 'Lee',
    'Time': '1:00 pm'
},
}


你让它看起来很简单,我不敢相信这是多么简单的修复。。。我想我确实需要多花些时间练习字典。这真的很管用,我很感动也很感激,希望将来能够在没有太多字典麻烦的情况下创建类似的脚本。为了更好地理解这段代码,我肯定会花一整晚的时间学习这段代码。谢谢!这一切都是为了练习,你会变得更好。CS Dojo有一个很棒的视频,它帮助我理解了字典,我建议你去看看。我一定会去看看视频,我真的很想更好地使用字典并理解它们。再次感谢你的帮助!
course_info = {
'CS101': {
    'Room': '3004',
    'Instructor': 'Haynes',
    'Time': '8:00 am'
},
'CS102': {
    'Room': '4501',
   'Instructor': 'Alvarado',
   'Time': '9:00 a.m.'
},
'CS103': {
    'Room': '6755',
    'instructor': 'Rich',
    'Time:': '10:00 am',
},
'NT110': {
    'Room': '1244',
    'instructor': 'Burkes',
    'Time': '11:00 am'
},
'CM241': {
    'Room': '1411',
    'Instructor': 'Lee',
    'Time': '1:00 pm'
},
get_course = input(f'Enter a course number: ')

try:
   courses = course_info[get_course]
   print(f'The details for for course {get_course} are: ')
   print(f"Room: {courses['Room']}, Time: {courses['Time']}, 
                   Instructor: {courses['Instructor']}")
except KeyError:
   print(f'Details not found for {get_course}')