gpt4 book ai didi

python - 如何让 if 语句接受三个参数中的任何一个而不在 Python 中全部为真

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:21 26 4
gpt4 key购买 nike

所以,我正在做一个小项目。我正在制作一个基于文本的温度计算器,但是我在程序中遇到了 if 语句的问题,正如这个问题的标题所暗示的那样。

这是我遇到问题的代码。

running = True
fahr = "fahrenheit"
cel = "celsius"
kel = "kelvin"
temperatures = [fahr, cel, kel]

while running == True:
try:
temperature_type = str.lower(input("What is the current temperature unit you are using? \nFahrenheit, Celsius, or Kelvin?\n"))
except ValueError:
print("I do not understand. Please try again.")
continue
if temperature_type == any(temperatures) and not all(temperatures):
break
else:
print("Please enter a valid input.")
continue

似乎我没有看到的逻辑有问题,我尝试了多种组合,甚至是 this post 中建议的组合而且它们似乎都没有按照我想要的方式工作。我希望它工作的方式是让变量 temperature_type 只等于华氏温度之一,然后问另一个问题(此处未显示)。如果变量 temperature_type 不等于这三个中的任何一个,那么我想循环重复。我遇到的问题是,无论我输入什么,它总是询问温度。如果有人有答案,我会很高兴知道我做错了什么,我也很喜欢对逻辑的解释,因为我还不是最擅长这种逻辑的人。再次感谢您的回答和/或指导!

最佳答案

anyall返回 TrueFalse ,而不是可以与 str 进行有意义比较的对象.全部非空str是“真实的”,所以你正在检查 if temperature_type == True and not True , 这当然永远不会过去。

你想要的逻辑可能是:

if temperature_type in temperatures:

别人不可能在您的设计中输入多种温度类型,因此您不需要任何与 all 等价的东西测试,你只想知道输入的字符串是否匹配三个已知字符串之一。

关于python - 如何让 if 语句接受三个参数中的任何一个而不在 Python 中全部为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51923309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com