Python 当给定所需输入时,如何结束while循环?
我的程序从用户那里获取他们想要添加的内容。这很好,但问题出现在嵌套while循环中,如果用户希望添加更多项,它会提示用户(y/n)。我希望y从开始开始启动循环,n退出循环并继续程序,任何其他输入在重新启动y/n提示符时给出错误。 我似乎不知道如何退出嵌套的while循环,也不知道如果输入既不是y也不是n,如何抛出错误。我该如何着手解决这个问题Python 当给定所需输入时,如何结束while循环?,python,while-loop,Python,While Loop,我的程序从用户那里获取他们想要添加的内容。这很好,但问题出现在嵌套while循环中,如果用户希望添加更多项,它会提示用户(y/n)。我希望y从开始开始启动循环,n退出循环并继续程序,任何其他输入在重新启动y/n提示符时给出错误。 我似乎不知道如何退出嵌套的while循环,也不知道如果输入既不是y也不是n,如何抛出错误。我该如何着手解决这个问题 elif user_input == "a": while True: try: ad
elif user_input == "a":
while True:
try:
add_item = input("What item would you like to add? ").lower()
if not re.match("^[a-z, A-Z]*$", add_item):
print("ERROR: Only letters A-Z are allowed!")
continue
elif len(add_item) < 1 or len(add_item) > 20:
print("Item name is too long, only a maximum of 20 characters are allowed!")
continue
else:
item_amount = int(input("How many of these would you like to add? "))
shopping_list[add_item] = item_amount
print(f"{item_amount}x {add_item.title()} added to the shopping list.\n")
while True:
try:
add_more = input("Would you like to add more items? (y/n): ").lower()
if add_more == "y":
break
elif add_more == "n":
break
except TypeError:
print("ERROR: Expected y or n in return! Try again!.\n")
break
except ValueError:
print("\nERROR: Amount must be an integer! Try adding an item again!\n")
elif user\u input==“a”:
尽管如此:
尝试:
add_item=input(“您想添加什么项目?”)。lower()
如果没有重新匹配(“^[a-z,a-z]*$”,则添加项目):
打印(“错误:只允许字母A-Z!”)
持续
elif len(添加项)<1或len(添加项)>20:
打印(“项目名称太长,最多允许20个字符!”)
持续
其他:
item_amount=int(输入(“您想添加多少?”)
购物清单[添加物品]=物品金额
打印(f“{item\u amount}x{add\u item.title()}已添加到购物列表。\n”)
尽管如此:
尝试:
add_more=input(“您想添加更多项目吗?(y/n):”)。lower()
如果add_more==“y”:
打破
elif add_more==“n”:
打破
除类型错误外:
打印(“错误:应返回y或n!重试”。\n”)
打破
除值错误外:
打印(“\n错误:金额必须是整数!请再次尝试添加项目!\n”)
keep_adding
表示下面的代码)来决定while循环的终止条件。它将被设置为False
iffadd_more==“n”
raise TypeError
中删除break
,除了TypeError
,以便继续询问“是否要添加更多项目?(y/n):”
elif user\u input==“a”:
继续添加=真
在继续添加的同时:
尝试:
add_item=input(“您想添加什么项目?”)。lower()
如果没有重新匹配(“^[a-z,a-z]*$”,则添加项目):
打印(“错误:只允许字母A-Z!”)
持续
elif len(添加项)<1或len(添加项)>20:
打印(“项目名称太长,最多允许20个字符!”)
持续
其他:
item_amount=int(输入(“您想添加多少?”)
购物清单[添加物品]=物品金额
打印(f“{item\u amount}x{add\u item.title()}已添加到购物列表。\n”)
尽管如此:
尝试:
add_more=input(“您想添加更多项目吗?(y/n):”)。lower()
如果add_more==“y”:
打破
elif add_more==“n”:
继续添加=False
打破
其他:
提高打字错误
除类型错误外:
打印(“错误:应返回y或n!重试”。\n”)
除值错误外:
打印(“\n错误:金额必须是整数!请再次尝试添加项目!\n”)
keep_adding
表示下面的代码)来决定while循环的终止条件。它将被设置为False
iffadd_more==“n”
raise TypeError
中删除break
,除了TypeError
,以便继续询问“是否要添加更多项目?(y/n):”
elif user\u input==“a”:
继续添加=真
在继续添加的同时:
尝试:
add_item=input(“您想添加什么项目?”)。lower()
如果没有重新匹配(“^[a-z,a-z]*$”,则添加项目):
打印(“错误:只允许字母A-Z!”)
持续
elif len(添加项)<1或len(添加项)>20:
打印(“项目名称太长,最多允许20个字符!”)
持续
其他:
item_amount=int(输入(“您想添加多少?”)
购物清单[添加物品]=物品金额
打印(f“{item\u amount}x{add\u item.title()}已添加到购物列表。\n”)
尽管如此:
尝试:
add_more=input(“您想添加更多项目吗?(y/n):”)。lower()
如果add_more==“y”:
打破
elif add_more==“n”:
继续添加=False
打破
其他:
提高打字错误
除类型错误外:
打印(“错误:应返回y或n!重试”。\n”)
除值错误外:
打印(“\n错误:金额必须是整数!请再次尝试添加项目!\n”)
您可以将第一个while True替换为while someVar,并在嵌套循环中更改someVar这是否回答了您的问题?您可以将第一个while True替换为while someVar,并在嵌套循环中更改someVar。这是否回答了您的问题?这太完美了,非常感谢你的解释!这太完美了,非常感谢你的解释!
elif user_input == "a":
keep_adding = True
while keep_adding:
try:
add_item = input("What item would you like to add? ").lower()
if not re.match("^[a-z, A-Z]*$", add_item):
print("ERROR: Only letters A-Z are allowed!")
continue
elif len(add_item) < 1 or len(add_item) > 20:
print("Item name is too long, only a maximum of 20 characters are allowed!")
continue
else:
item_amount = int(input("How many of these would you like to add? "))
shopping_list[add_item] = item_amount
print(f"{item_amount}x {add_item.title()} added to the shopping list.\n")
while True:
try:
add_more = input("Would you like to add more items? (y/n): ").lower()
if add_more == "y":
break
elif add_more == "n":
keep_adding = False
break
else:
raise TypeError
except TypeError:
print("ERROR: Expected y or n in return! Try again!.\n")
except ValueError:
print("\nERROR: Amount must be an integer! Try adding an item again!\n")