如何用for循环实现城市选项校验与预算引导的正确逻辑?
问题分析与修复方案
你的问题完全是写法逻辑错误,和for循环能不能处理选项没关系,核心问题出在这两点:
- 误用for循环:你现在的
for options in city是在遍历输入字符串的每一个字符,比如输入a会循环1次,输入xyz会循环3次,所以不管输入啥都会触发预算选择的打印 - 误解for循环的else块:for的else代码块只有在循环完整执行完毕且没有被break中断时才会运行,所以不管输入合法与否,循环跑完都会执行
print('no hotels found')
要实现你要的效果(输入合法城市才显示预算,否则提示错误并重新输入),应该用while循环来持续接收输入,配合if判断输入是否合法,代码如下:
# 打印城市选项 print('''a. mumbai b. delhi c. chennai''') # 合法城市选项集合 valid_cities = {'a', 'b', 'c'} while True: city = input('enter your city: ').strip().lower() if city in valid_cities: # 输入合法,显示预算选项 print('choose your budget:') print('''a.2k b. 5k c. 8k''') # 若不需要继续循环,可添加break退出 break else: # 输入不合法,提示并继续循环 print('no hotels found, please enter a valid option (a/b/c)')
这段代码的逻辑:
- 用
while True创建无限循环,直到输入合法才通过break退出 strip().lower()处理输入,兼容用户输入带空格或大写的情况- 用集合
valid_cities判断输入是否合法,效率更高
内容的提问来源于stack exchange,提问作者liquidmercury101
相关产品推荐
相关产品推荐

