首页 > 解决方案 > 多个 if 条件给了我错误的答案

问题描述

我有三个不同的城市,我想根据用户的输入打印城市之间的距离。

A 到 B 是 100 英里 A 到 C 是 150 英里 C 到 B 是 80 英里

我使用具有多个条件的 if 语句来定义变量距离,但它从来没有给我正确的答案:/

我还想添加一个 else 语句,如果用户进入 a、b 或 c 以外的其他城市,或者当用户两次进入同一个城市时,就会触发该语句。

我尝试过以不同的方式设置括号并使用 if 而不是 elif。

我的代码:

AB=100
AC=150
CB=80

city_1=input("Enter city 1 ")
city_2=input("Enter city 2 ")

if (city_1=="A" or "B") and (city_2=="A" or "B") and (city_1 != city_2):
    distance=100
elif (city_1=="A" or "C") and (city_2=="A" or "C") and (city_1 != city_2):
    distance=150
elif (city_1=="B" or "C") and (city_2=="B" or "C") and (city_1 != city_2):
    distance=80

if city_1==city_2 or (city_1 or city_2 != "A" or "B" or "C"):
    print("You did not enter a viable match.")

#print(distance)

根据用户输入的内容,结果应显示:100、150 或 80

但是,我的代码显示 AC 100 而不是 150。

有什么提示吗?

标签: python

解决方案


Python 不是人类,它不像人类那样理解语言。所以当你读到:

if city equals "A" or "B"

你可能明白,意思是 city 可以等于 A 或 B。但是 Python 看到的是这样的:

if 
    city equals "A"
    OR
    "B"

它在这里将“B”视为自己的条件,作为or分隔条件的关键字。并且非空字符串评估为真,因此无论如何这些条件都评估为真。

有几种方法可以解决这个问题:

if city1 == "A" or city1 == "B"
if city1 in ["A", "B"]
if city1 in {"A", "B"}

推荐阅读