You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:35:17