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

为何输入未匹配列表元素时Python的if语句仍执行?

问题原因

你的代码逻辑判断出错了。原条件if city in Newyork or texas:的实际执行逻辑是:先判断city in Newyork,如果这个不成立,就会判断texas这个列表本身的布尔值——非空列表在Python中会被视为True,所以不管你输入什么,这个条件都会成立,自然永远输出yes。

修正方法

你需要明确判断输入的城市是否在任意一个列表里,有两种常见写法:

写法一:分别判断两个列表

texas = ['austin', 'houston', 'dallas']
Newyork = ['albany','stony', 'nyc']
city = input('enter city name?\n>>')
if city in Newyork or city in texas:
    print('yes')
else: 
    print('no')

写法二:合并列表后判断

如果列表不大,也可以把两个列表合并后再判断,代码更简洁:

texas = ['austin', 'houston', 'dallas']
Newyork = ['albany','stony', 'nyc']
city = input('enter city name?\n>>')
# 合并两个列表,再判断是否包含输入的城市
if city in Newyork + texas:
    print('yes')
else: 
    print('no')

另外注意输入语句里的换行,原代码的换行写法可能导致语法错误,已经一并修正为input('enter city name?\n>>')。

内容的提问来源于stack exchange,提问作者Speedster_knight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:26:20