Python 3.x python:如果elif else工作不正确。。?
我有python 3.4.3 如果我使用:Python 3.x python:如果elif else工作不正确。。?,python-3.x,Python 3.x,我有python 3.4.3 如果我使用: import platform platform.architecture() 结果是: ('64bit', 'WindowsPE') ['win_test_ok'] 我有一个简单的程序(仅供我使用,仅供测试): 结果是: ('64bit', 'WindowsPE') ['win_test_ok'] 但是!如果我重复使用“或”,我的意思是: if ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) or
import platform
platform.architecture()
结果是:
('64bit', 'WindowsPE')
['win_test_ok']
我有一个简单的程序(仅供我使用,仅供测试):
结果是:
('64bit', 'WindowsPE')
['win_test_ok']
但是!如果我重复使用“或”,我的意思是:
if ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) or ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) in platform.architecture():
及
它工作得很好:
['Windows', '64-bit']
我试着到处寻找答案,但我失败了。。。
有什么想法吗?你对基本逻辑运算符有一个基本的误解。表示
x或y
语句的计算方式为“如果x为false,那么y,否则x”。在代码中这些语句的上下文中考虑:
windows = "Windows" or "windows"
linux = "Linux" or "linux"
对于每一个,它将查看或
前面的字符串。由于它不是空字符串,因此计算结果为True
,因此“Windows”或“Windows”
计算结果仅为“Windows”
。因此,这两种说法完全相同:
windows = "Windows"
linux = "Linux"
碰巧,您得到了幸运,并且platform.system()
返回了“Windows”
,并且您将其放入了外部if
语句的正确分支中。现在是下一期:
if ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) in platform.architecture():
我不确定您认为这是如何工作的,但os.getenv(“处理器体系结构”)中的“64”
将评估为True
(在64位环境中),因此该行相当于:
if True in platform.architecture():
…这将不会成功,因为字符串中没有True
对象
“复制”行按预期工作的原因:
if ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) or ("64" in os.getenv('PROCESSOR_ARCHITECTURE')) in platform.architecture():
…是因为,正如我所提到的,os.getenv('PROCESSOR_ARCHITECTURE')中的“64”计算结果为True
。由于这使得或
之前的部分为真,因此程序满足并进入if
块,而不必查看后面的内容
那么如何修复它呢?
如果要判断一个字符串是否与多个字符串中的一个匹配,可以使用列表或元组以及
中的:
windows = ("Windows", "windows")
...
if a in windows:
至于另一个,我不完全确定您实际上想做什么,但是删除
子句中的第二个,似乎可以做您想要做的事情:
if "64" in os.getenv('PROCESSOR_ARCHITECTURE'):
您知道“Windows”或“Windows”
的计算结果是什么吗?是的)您可以尝试仅使用“Windows”运行此代码,问题仍然是elif a==linux:
无效。如果没有前面的if
,则不能使用elif
。压痕也掉了。我很惊讶你没有提到任何错误windows=“windows”或“windows”
也不会按您预期的方式工作(它总是被分配给第一个单词。它不是某种布尔变量,而是一个str
ing。这是我关于stackoverflow的第一个问题,所以我用错误的语法“复制粘贴”。很抱歉,这个问题不在语法上,问题在“复制”。如果你正确地编写代码,它将不起作用,只起作用:如果a或B中的a…不起作用汉克斯:请给我一个充分的解释,它工作得很好,我明白我在代码中最大的错误,愿上帝保佑你身体健康!