簡體   English   中英

if-else里面的for循環不能在python中工作

[英]if-else inside for loop not working in python

我正在通過從文本文件中逐行讀取輸入來編寫一個帶有if-else條件的簡單Python腳本。 下面是我的腳本。 我應該得到預期的輸出。 請幫忙! 我的env.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

問題是if eachenv=="DEV01" or "DEV02"

你不能這樣檢查。 如果eachenv=="DEV01" ,結果將為True否則eachenv=="DEV01"將為"DEV02" ,而不是False 你應該這樣:

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

也改變for eachenv in envnames: to:

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

意味着,如果是以下任何一種情況:

  • eachenv等於"DEV01"
  • "DEV02"

那么, "DEV02"怎么樣? 它存在,因此條件的選項將是“真實的”,所以你的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給出了寫這個if語句的正確方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM