字典Python3的问题

2024-05-12 21:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个猜谜游戏任务。作业使用字典存储课程名称(关键)和课程编号(值)。用户猜测给定课程名称的课程编号。如果值与键匹配,则应打印“correct!”,反之亦然

我让程序一次显示一个键,并用输入语句将它们分开。我已使正确/不正确的计数器工作。我无法得到一个if语句,它应该检查值是否与键匹配。无论答案是否正确,每次打印都不正确。我意识到if语句的条件可能有问题,因为我不确定如何一次提取一个值

以下是我目前掌握的情况:

# Mainline

def main():
    programming_courses={"Computer Concepts":"IT 1025",\
        "Programming Logic":"IT 1050",\
        "Java Programming":"IT 2670",\
        "C++ Programming":"IT 2650",\
        "Python Programming":"IT 2800"}

    print ("Learn your programming courses!\n")

    correct=0
    incorrect=0
    v=0
  
    # Game Loop

    for key in programming_courses.keys():
        print(key)
        answer = input("Enter the Course Number: ")
        if answer != programming_courses.values():
            print("Incorrect")
            incorrect += 1
        else:
            print("Correct!")
            correct += 1
            

   
    # Display correct and incorrect answers
    print ("You missed ",incorrect," courses.")
    print ("You got ",correct," courses.\n")

# Entry Point
response=""
while (response!="n"):
    main()
    response=input("\n\nPlay again?(y/n)\n# ")

Tags: keyifmainresponseit语句编号课程
3条回答

你可以试试这个

if answer != programming_courses[key]:

你的问题是:

if answer != programming_courses.values():

programming_courses.values()是字典中所有值的列表。如果你不明白你的程序中发生了什么,那么把东西打印出来,看看它是否像你期望的那样,真的很有帮助

您需要的是当前所使用的key的特定值,您需要从字典中查找该值,如下所示:

if answer != programming_courses[key]:

此外,在默认情况下,迭代dict会为您提供密钥,因此您可以说:

for key in programming_courses:

您不需要在那里使用.keys()

您的问题是在检查dict时。当前,您的代码正在将答案与dict中所有值的列表进行比较:

out[]:
dict_values(['IT 1025', 'IT 1050', 'IT 2670', 'IT 2650', 'IT 2800'])

如果更改为以下选项,则可以使用给定的键从dict中获取特定值:

for key in programming_courses.keys():
    print(key)
    answer = input("Enter the Course Number: ")
    if answer != programming_courses[key]:
        print("Incorrect")
        incorrect += 1
    else:
        print("Correct!")
        correct += 1

相关问题 更多 >