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

Python函数多条件Or判断逻辑错误:输入Chicago返回Texas

问题分析与解决方案

嘿,这是Python新手非常容易踩的逻辑坑!你的条件判断写法有误,导致不管传入什么城市名,第一个if分支都会被触发,所以返回了"Texas"。

错误原因

你写的判断条件比如:

if cityName == "dallas" or "austin" or "houston"...

Python会把它解析成:

if (cityName == "dallas") or ("austin") or ("houston")...

而非空字符串在布尔判断中会被视为True,所以只要or后面跟着的是像"austin"这样的非空字符串,这个条件就永远为True——不管cityName是什么,第一个if都会执行,直接返回"Texas"。

两种修正方案

方案1:补全每个判断条件

把每个or后面的部分都补全为cityName == "城市名",确保每个判断都是在比较cityName:

def whatState(cityName):
    if cityName == "dallas" or cityName == "austin" or cityName == "houston" or cityName == "ft worth" or cityName == "el paso":
        stateName = "Texas"
    elif cityName == "sacramento" or cityName == "san francisco" or cityName == "los angeles" or cityName == "san diego":
        stateName = "California"
    elif cityName == "miami" or cityName == "west palm beach" or cityName == "orlando" or cityName == "key west" or cityName == "tallahassee":
        stateName = "Florida"
    elif cityName == "chicago" or cityName == "naperville" or cityName == "peoria" or cityName == "evanston" or cityName == "rockford":
        stateName = "Illinois"
    return stateName

方案2:用in判断(更推荐)

把每个州的城市放到集合里,用cityName in 集合来判断,代码更简洁易读,查找效率也更高:

def whatState(cityName):
    if cityName in {"dallas", "austin", "houston", "ft worth", "el paso"}:
        stateName = "Texas"
    elif cityName in {"sacramento", "san francisco", "los angeles", "san diego"}:
        stateName = "California"
    elif cityName in {"miami", "west palm beach", "orlando", "key west", "tallahassee"}:
        stateName = "Florida"
    elif cityName in {"chicago", "naperville", "peoria", "evanston", "rockford"}:
        stateName = "Illinois"
    # 可选:添加默认分支,避免传入未知城市时报错
    else:
        stateName = "Unknown State"
    return stateName

额外优化建议

如果后续要添加更多城市和州,建议用字典来存储映射关系,维护起来更方便:

def whatState(cityName):
    city_to_state = {
        "dallas": "Texas",
        "austin": "Texas",
        "houston": "Texas",
        "ft worth": "Texas",
        "el paso": "Texas",
        "sacramento": "California",
        "san francisco": "California",
        "los angeles": "California",
        "san diego": "California",
        "miami": "Florida",
        "west palm beach": "Florida",
        "orlando": "Florida",
        "key west": "Florida",
        "tallahassee": "Florida",
        "chicago": "Illinois",
        "naperville": "Illinois",
        "peoria": "Illinois",
        "evanston": "Illinois",
        "rockford": "Illinois"
    }
    return city_to_state.get(cityName, "Unknown State")

这样只要维护这个字典就行,不用写一堆if-elif,代码更简洁健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:52:27