python - 多个 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 不是人类,它不像人类那样理解语言。所以当你读到:
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"}
推荐阅读
- kafka-consumer-api - Kafka消费者错误处理:混淆ErrorHandling / RetryTemplate
- python - 从熊猫数据框中删除嵌套列
- python - 如果满足条件,尝试通过弹出最后两个来使列表“foorbars”动态化
- javascript - 如何在反应中将参数从文件发送到另一个文件
- julia - LoadError: MethodError: 没有方法匹配 mod(::VariableRef, ::Float64)
- javascript - 根据 Vue 2 中的响应内容替换值?
- android - 请建议改进 Kotlin 中的字符串生成器(Android 项目)
- email - 电子邮件提供商、位置和反垃圾邮件
- python - 迭代numpy数组,np.ndindex弄得一团糟
- sum - 根据 Power BI 中模型的不同列求和