下面是我在修改Python时编写的基本脚本的一部分。我打算让这个剧本做的是提示我注意我的笔记,然后要求我确认我的选择。如果由于某种原因我选择了错误的主题,我已经加入了一个while循环,它会重复,直到我的选择正确为止。该脚本的结果是它将返回确认的主题。
当我执行脚本时出现的问题是,当我回复'no'(或任何其他指示我不确认这是正确的选择)时,终端输出反复向我发送主题列表。终止这个的唯一方法是使用KeyboardInterrupt。
我该如何解决这个问题? 我觉得它可能与while循环中的iteration语句有关,或者break语句的位置不合适。
感谢您的帮助。
def subject():
subject_dict = {1: 'Mathematics', 2: 'Computer Science', 3: 'English Literature & Language', 4: 'Philosophy', 5: 'Linguistics', 6: 'Art & Design'}
subject_prompt = ("\nSelect the subject of your note.\n")
print(subject_prompt)
for i in subject_dict:
subject_choices = str(i) + ". " + subject_dict[i]
print(subject_choices)
subject_prompt_input = input("\n> ")
x = int(subject_prompt_input)
confirmation = input("\nSo the subject of your note is" + " '" + subject_dict[x] + "'" + "?\n> ")
while confirmation in ['no', 'No', 'n', 'NO']:
print(subject_prompt)
for i in subject_dict:
subject_choices = str(i) + ". " + subject_dict[i]
print(subject_choices)
subject_prompt_input
confirmation
if confirmation in ['quit', 'stop', 'exit']:
quit()
if confirmation in ['Yes', 'YES', 'yes', 'y', 'Y']:
break
if confirmation in ['yes', 'y', 'YES', 'Y']:
selection = subject_dict[x]
return selection
答案 0 :(得分:3)
您是否打算继续循环,直到用户按“是”或“退出”?
如果是,则需要将输入放在循环中。
将while语句更改为while True
,因为您仍然没有确认变量。
while True:
confirmation = input("\nSo the subject of your note is" + " '" + subject_dict[x] + "'" + "?\n> ")
print(subject_prompt)
for i in subject_dict:
subject_choices = str(i) + ". " + subject_dict[i]
print(subject_choices)
subject_prompt_input
confirmation
if confirmation in ['quit', 'stop', 'exit']:
quit()
if confirmation in ['Yes', 'YES', 'yes', 'y', 'Y']:
break
if confirmation in ['yes', 'y', 'YES', 'Y']:
selection = subject_dict[x]
return selection
修改强>
根据你在评论中提出的问题。
这与不足无关。
你可以这样做:confirmation = 'no'
while confirmation in ['no', 'No', 'n', 'NO']:
...
虽然,这很丑:)