我在Python和用户输入中使用字典时遇到问题

2024-06-02 07:16:05 发布

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

这段代码有问题。基本上,我要求用户输入一个问题,然后它要求用户给出答案。它们都存储在词典中。我可以存储问题,但当通过键入#1来回忆答案时,它会返回两次问题。知道为什么吗

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

Tags: thetoanswerindictionaryiftitlebe
1条回答
网友
1楼 · 发布于 2024-06-02 07:16:05

在这两个循环中

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

您迭代字典的相同键faq。打印第一个循环中的所有问题,然后再次打印第二个循环中的所有问题

你应该做的是:

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

相关问题 更多 >