Python条件分支中else语句无法正常工作问题:无论输入何种CPU均输出‘CPU FOUND’
问题原因分析
嘿,我来帮你搞定这个问题!你的条件判断逻辑犯了一个Python新手很容易踩的坑——or连接的表达式写法错误。
看你写的if语句:
if cpu == "Ryzen 9 5950X" or "i9-10900K" or "i9-10900KF":
Python会把这个表达式拆成三个独立的判断:
cpu == "Ryzen 9 5950X"(这个是正常的比较)"i9-10900K"(非空字符串在布尔判断里永远是True)"i9-10900KF"(同样永远是True)
也就是说,哪怕第一个比较不成立,后面的字符串本身会被判定为True,导致整个if条件永远为真,自然永远走不到else分支。
解决方法
这里有两种简洁可靠的修正方式:
方式1:补全每个比较表达式
把or连接的每个部分都写成完整的cpu == 目标值:
cpu = input("CPU: ") if cpu == "Ryzen 9 5950X" or cpu == "i9-10900K" or cpu == "i9-10900KF": print("CPU FOUND") else: print("CPU NOT FOUND")
方式2:使用in操作符(更推荐)
把所有目标CPU型号放到一个集合(或列表)里,用in判断输入是否在集合内,这种写法在选项较多时更简洁易维护:
cpu = input("CPU: ") target_cpus = {"Ryzen 9 5950X", "i9-10900K", "i9-10900KF"} if cpu in target_cpus: print("CPU FOUND") else: print("CPU NOT FOUND")
用集合的原因是in操作在集合中的查找效率比列表更高,当然如果选项少,用列表也完全没问题。
内容的提问来源于stack exchange,提问作者pelivekka
相关产品推荐
相关产品推荐

