简体   繁体   中英

I'm having trouble with Dictionaries in Python and user input

I'm having trouble with this piece of code. Basically I ask the user to enter a question and then it asks the user for the answer. These are both stored in the dictionary. I'm able to store the question but when it comes to recalling the answer by typing in #1, it returns the question twice instead. Any idea why?

#start title screen

title = "Frequently Asked Questions"
 
print()  
print("=" * len(title))
print(title)
print("=" * len(title))  
print()

#start menu list  
menu = """ 
0: Exit   
1: List FAQ's  
2: Add FAQ  
3: Delete FAQ  
"""  

#title for selection #1  
def faq_title():   
    print("Frequently Asked Questions:")  
    print("===========================")  

#empty dictionary to be filled with user input questions and answers
faq = {}

done = False

while not done:  
   print(menu)  
    #enter a choice number  
    selection = input("Please enter a choice: ")  
    print()  
   # if user enters #0 then quits  
   if selection == "0":  
        done = True  
   #if user enters #1, gets list from dictionary named "faq"  
    elif selection == "1":   
        faq_title()  
        for question in faq:  
           print("Question: {}".format(question))  
        for answer in faq:  
            print("Answer: {}".format(answer))  
#if user enters #2, user enters a question and then an answer which is to be stored into "faq" dictionary  
#user can add as many Q&A as they want to be stored in "faq" dictionary  
   elif selection == "2":  
        question = input("Please enter the question: ")  
        answer = input("Please enter the answer: ")  
       if question in faq:  
           print('That question is already listed. Enter another question.')  
       else:  
            faq[question] = answer  
            print('Has been added to the dictionary.')  
    #if user enter #3, user enters a question to be deleted from the list.  
   #if list is empty or not in list, then return could not find  
    elif selection == "3":  
        delete = input("Please enter the question to be deleted:")  
        if delete in faq:  
            del faq[question]  
        if delete not in faq:  
            print("Could not find {} in the FAQ's:".format(delete))  
           print("No changes made")  

print("Done!")

In these two loops

for question in faq:  
    print("Question: {}".format(question))  
for answer in faq:  
    print("Answer: {}".format(answer)) 

you iterate over the same keys of the dictionary faq . You print all the questions in the first loop, and then print all the questions again in the second loop.

What you should do instead is:

for question in faq:
    print("Question: {}".format(question))
    print("Answer: {}".format(faq[question]))

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