3 回答
TA贡献1856条经验 获得超17个赞
问题是 userQuestion 没有重置为空字符串,因此userQuestion not in faq
在您第一次调用 Add_faq() 后将为 false,因此程序将永远不会在第一次迭代后进入 while 循环。
TA贡献1785条经验 获得超8个赞
这真是一个好项目!您已经正确地发现了导致问题的模块,这很好。在 add_faq() 中,您将错误的变量设置为全局变量,此处已修复:
import pyinputplus as pyip
# Defines variables used in program
done = False #loop for input on menu
userQuestion = ''
userAnswer = ''
# Creates the menu for user interacion
menu = '''
===========================
Frequently Asked Quesstions
===========================
1: Exit
2: List FAQ's
3: Add FAQ
4: Delete FAQ
'''
###############################################
# Creates dictionary and sets default values for FAQ for functionality
faq = {
'North Korea': 'Is afraid of clowns',
'Climate change': 'It is a lie.',
'America': 'Is burning.'
}
###############################################
# Function that prints a list of the current FAQs
def display_Faq():
print('\nFrequently Asked Questions\n==========================')
for question in faq:
print('Question: ', question, '\nAnswer: ', faq[question], '\n')
print()
###############################################
# Function that adds to the FAQ based on user input
def Add_Faq():
global faq
while True:
userQuestion = input('\nPlease enter a question for the FAQs: ')
userAnswer = input('\nPlease enter the answer: ')
if userQuestion not in faq:
faq[userQuestion] = userAnswer
print('\nEntry has been added to the FAQs.')
break
else:
print(str(userQuestion) + ' already exists in FAQs, please rephrase.\n')
###############################################
# Function that checks user input against FAQ and deletes entries
def Del_Faq():
global faq
userQuestion = input('\nEnter an entry to delete: ')
if userQuestion in faq:
del faq[userQuestion]
print(str(userQuestion) + ' has been deleted from the FAQs')
else:
print(str(userQustion) + ' not exist in the FAQs, no changes have been made.')
###############################################
# Actual program that runs based off user input
while not done:
print(menu)
try:
selection = pyip.inputInt(prompt = '\nPlease enter menu item 1-4: ', min=1, max=4)
if selection == 1:
done = True
elif selection == 2:
display_Faq()
elif selection == 3:
Add_Faq()
elif selection == 4:
Del_Faq()
except pyip.PyInputPlusException:
print('Please check your input and try again')
continue
TA贡献1827条经验 获得超4个赞
所以我觉得自己很愚蠢,但我在发布后大约 20 分钟发现了我的错误。感谢 Viggy 的回复。在阅读和编码 3 个多小时后,我有点精疲力尽,所有东西都模糊不清,我感到很沮丧,哈哈。
添加回答
举报