如果条件给我错误答案则为多个

时间:2019-09-19 14:25:15

标签: python

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

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

但是,我的代码显示的是A-C 100(而不是150)。

有任何提示吗?

1 个答案:

答案 0 :(得分:3)

Python不是人类,它不像人类那样理解语言。因此,当您阅读:

if city equals "A" or "B"

您可能知道这意味着城市可以等于A或B。但是Python看到的是:

if 
    city equals "A"
    OR
    "B"

此处将“ B”视为其自身的条件,因为or是分隔条件的关键字。而且非空字符串的计算结果为true,因此无论如何,这些条件的计算结果均为true。

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

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