Python多行if条件使用方法及多地址匹配逻辑错误求助
解决你的Python if语句问题
嘿,很高兴能帮你搞定这两个Python问题!先解决你当前遇到的逻辑错误,再聊聊多行if条件的正确写法~
一、修复if语句的逻辑错误
你遇到的问题根源在于if语句的结构:你写了三个独立的if,只有第三个if和else配对。这意味着,哪怕输入匹配了前两个城市中的一个,第三个if的条件不成立时,else分支还是会执行,所以才会同时显示里程和错误提示。
修正方案1:使用if-elif-else链式结构
把后面的两个if改成elif,这样整个逻辑会按顺序判断,只要有一个条件满足,后面的判断就会跳过,最后只有所有条件都不满足时才会执行else:
from colorama import Fore # 记得导入Fore模块哦 destino1 = "Tuscalosa AL" destino2 = 'Warren OH' destino3 = "Atlanta GA" address = input("请输入地址:") # 假设这里有获取输入的代码 if address == destino1: # 这里用==更准确,in是判断子串,你要的是完全匹配对吧? print(Fore.WHITE + "\nTotal Miles ", "\033[34m","935 miles") elif address == destino2: print(Fore.WHITE + "\nTotal Miles ", "\033[34m", "1600 miles") elif address == destino3: print(Fore.WHITE + "\nTotal Miles ", "\033[34m", "1107 miles") else: print(Fore.GREEN + "\nAddress not Found, check address again")
注意:原来的
address in (destino1)其实是判断address是否是destino1的子串,比如输入"Tuscalosa"也会匹配,如果你需要的是完全匹配,用address == destino1更准确。
修正方案2:用字典优化代码(更推荐)
当你有多个键值对需要匹配时,用字典会让代码更简洁、易维护:
from colorama import Fore city_miles = { "Tuscalosa AL": "935 miles", "Warren OH": "1600 miles", "Atlanta GA": "1107 miles" } address = input("请输入地址:") miles = city_miles.get(address) if miles: print(Fore.WHITE + "\nTotal Miles ", "\033[34m", miles) else: print(Fore.GREEN + "\nAddress not Found, check address again")
这样后续要添加更多城市,只要在字典里加键值对就行,不用改判断逻辑,非常方便。
二、多行中使用if条件的方法
当你的if条件很长,需要拆分成多行时,有几种常用方式:
- 用括号包裹条件:这是最推荐的方式,不需要额外符号,可读性强:
if (address == destino1 or address == destino2 or address == destino3): print("匹配到目标城市")
- 使用反斜杠
\换行:
if address == destino1 \ or address == destino2 \ or address == destino3: print("匹配到目标城市")
- 结合逻辑运算符拆分多行:如果是多个
and/or连接的条件,可以每行写一个条件部分:
if (len(address) > 5 and address.endswith("AL") and "Tuscalosa" in address): print("匹配到阿拉巴马州的Tuscalosa")
这样拆分后,长条件会更清晰,便于阅读和维护。
内容的提问来源于stack exchange,提问作者DanielTQ
相关产品推荐
相关产品推荐

