求问:第二个while True的判断好像有点问题,我输入0之后,然后输入除了y和n之外的字符会一直循环,怎么解决呢?
def show_menu():
"""显示菜单"""
print("*" * 20)
print("欢迎丹仪使用【名片管理系统】V1.0")
print("*" * 20)
def new_card():
print("-" * 20)
print("新增名片")
def show_all():
print("-" * 20)
print("显示所有名片")
def search_card():
print("-" * 20)
print("搜索名片")
import A_31_project1tools
while True:
# TODO 还需要在这里显示一个功能菜单(todo注释)
A_31_project1tools.show_menu()
act_str = input("请选择希望执行的操作:(0退出系统/1新增名片/2显示所有名片/3搜索名片,请任选一个)")
print("您选择的操作是【%s】" % act_str)
# 选项:0退出,1
if act_str in ["1", "2", "3"]:
if act_str == "1":
A_31_project1tools.new_card()
elif act_str == "2":
A_31_project1tools.show_all()
elif act_str == "3":
A_31_project1tools.search_card()
elif act_str == "0":
ans_str = input("您确定要退出系统吗?回答y/n:")
if ans_str in ["y"]:
break
while True:
if ans_str not in ["y", "n"]:
print("您输入的不正确,请重新输入并注意小写")
elif ans_str in ["n"]:
break
else:
break
else:
print("输入的数字不正确哦~要重新输入")
你在处理退出确认的部分时,你的循环逻辑有点问题。你应该在用户输入不是"y"或"n"的情况下循环询问,直到用户输入正确的确认字符。以下是修复后的代码:
def show_menu():
"""显示菜单"""
print("*" * 20)
print("欢迎丹仪使用【名片管理系统】V1.0")
print("*" * 20)
def new_card():
print("-" * 20)
print("新增名片")
def show_all():
print("-" * 20)
print("显示所有名片")
def search_card():
print("-" * 20)
print("搜索名片")
import A_31_project1tools
while True:
A_31_project1tools.show_menu()
act_str = input("请选择希望执行的操作:(0退出系统/1新增名片/2显示所有名片/3搜索名片,请任选一个)")
print("您选择的操作是【%s】" % act_str)
if act_str in ["1", "2", "3"]:
if act_str == "1":
A_31_project1tools.new_card()
elif act_str == "2":
A_31_project1tools.show_all()
elif act_str == "3":
A_31_project1tools.search_card()
elif act_str == "0":
while True:
ans_str = input("您确定要退出系统吗?回答y/n:")
if ans_str in ["y"]:
break
elif ans_str in ["n"]:
break
else:
print("您输入的不正确,请重新输入并注意小写")
if ans_str == "y":
break
else:
print("输入的数字不正确哦~要重新输入")
在这个修正的版本中,当用户选择退出系统(即输入0)时,程序将进入一个新的循环,询问用户是否真的想要退出。如果用户输入"y",那么外层的主循环将会结束,程序退出。如果用户输入"n",那么程序将跳出内层循环,返回到主菜单。如果用户输入的既不是"y"也不是"n",那么程序将提示用户输入不正确,并再次询问,直到用户输入正确的确认字符。