我有三个不同的城市,我想根据用户的输入来打印城市之间的距离。
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)。
有任何提示吗?
答案 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"}