简体   繁体   中英

Problems with Dictionary Python3

I'm currently working on a guessing game assignment. The assignment uses a dictionary to store the course name which is the key and the course number which is the value. The user guesses the course number of the course name given. If the value matches the key then it should print "correct." and vice versa.

I have gotten the program to display the keys one at a time with an input statement separating them. I've gotten the correct/incorrect counters working. I'm not able to get an if statement working which is supposed to check if the value matches the key. It prints incorrect every time regardless of if the answer is correct. I realize there's probably something wrong with the condition of the if statement because i'm not really sure how to extract one value at a time.

Here's what I have so far:

# 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# ")

Your problem is when you are checking your dict. Currently your code is comparing the answer to a list of all the values in the dict:

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

If you change to the following it works, by taking the specific value from the dict with the given key:

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

Your problem is here:

if answer != programming_courses.values():

programming_courses.values() is a list of all the values in the dictionary. If you don't understand what's happening in your program, it's really helpful to just print stuff out and see if it looks like what you expect.

What you want is the specific value for the key you're on right now, which you need to look up from the dictionary like so:

if answer != programming_courses[key]:

Also, iterating over a dict gives you the keys by default, so you can just say:

for key in programming_courses:

You don't need to use .keys() there.

you could try this

if answer != programming_courses[key]:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM