How to have if statement accept any one of three arguments without all being true in Python
所以,我正在做一个小项目。我正在制作一个基于文本的温度计算器,但是我在程序中遇到了一个关于if语句的问题,正如这个问题的标题所暗示的那样。
这是我遇到问题的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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? Fahrenheit, Celsius, or Kelvin? ")) 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 |
似乎我看不到的逻辑有问题,我尝试了多种组合,即使是从这篇文章中建议的组合,它们中没有一个像我希望的那样工作。我想让它工作的方式是让可变温度_型只等于一个温度,比如华氏度,然后问另一个问题(这里没有显示)。如果变温型不等于这三种类型中的任何一种,那么我想循环重复。我面临的问题是,无论我输入什么,它总是要求温度。如果有人有答案,我会很高兴知道我做错了什么,我也会喜欢对逻辑的解释,因为我对这种逻辑还不是最好的。再次感谢您的回答和/或指导!
你想要的逻辑可能是:
1 | if temperature_type in temperatures: |
号
在您的设计中,不可能有人输入多种温度类型,因此您不需要任何等效的
这里有一个简单的检查版本,它简单地检查输入字符串是否是有效温度之一。它使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | running = True fahr ="fahrenheit" cel ="celsius" kel ="kelvin" temperatures = [fahr, cel, kel] while running: temperature_type = str.lower(input("What is the current temperature unit you are using? Fahrenheit, Celsius, or Kelvin? ")) if temperature_type in temperatures: break print("Please enter a valid input.") |
也许可以扩展到包含所有比例,并使其更容易成为用户界面。
1 2 3 4 | scales = ['F', 'R', 'C', 'K'] while True: if input("What temperature scale are you using [F, C, K, R]?")[0].upper() in scales: break |
〔0〕
或:
1 2 3 4 5 6 | while 1: if input("What is the current temperature unit you are using? Fahrenheit, Celsius, or Kelvin? ").lower() in temperatures: break print("Please enter a valid input.") |
说明:
我移除了
您也可以执行
1 2 | >>> 1==True True |
。