[英]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.