if-else循环内在Python中不起作用

2024-10-01 07:41:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用for循环中的if-else条件编写一个简单的Python脚本,从文本文件逐行读取输入。下面是我的剧本。 我应该得到预期的结果。请帮帮我! 我的环境.txt包含:

DEV01
DEV02
UAT01
UAT02

代码如下:

with open("env.txt") as envnames:
    for eachenv in envnames:
        if eachenv=="DEV01" or "DEV02":
            eachenv="dev"
            print (eachenv)
        elif eachenv=="UAT01" or "UAT02":
            eachenv="uat"
            print(eachenv)
        else :
            print('')

期望值:

dev
dev
uat
uat

实际值:

dev
dev
dev
dev

Tags: ordevtxtforif条件elseprint
3条回答

问题是if eachenv=="DEV01" or "DEV02"。你知道吗

你不能这样检查。如果eachenv=="DEV01",结果将是True,否则结果将是"DEV02",而不是False。 你应该这样做:

if eachenv in ["DEV01", "DEV02"]:

同时将for eachenv in envnames:更改为:

for eachenv in envnames.readlines():
 if eachenv=="DEV01" or "DEV02":

是指,如果出现以下情况之一:

  • eachenv等于"DEV01"
  • "DEV02"

"DEV02"呢?它存在,所以条件的选项将是“truthy”,所以您的if将始终通过。你知道吗

这不是链式条件的工作方式。你知道吗

你的意思是:

if eachenv=="DEV01" or eachenv=="DEV02":

现在,如果出现以下情况之一:

  • eachenv等于"DEV01"
  • eachenv等于"DEV02"

耶!你知道吗

if eachenv=="DEV01" or "DEV02":行中,第二个条件始终为真:

>>> if "DEV02":
...     print('hello')
... 
hello

这是因为字符串"DEV02"是一个对象,因此将被True计算。你知道吗

@Lightness Races in Orbit给出了正确的方法来编写这个if语句。你知道吗

相关问题 更多 >