我正在嘗試創建一個回圈來檢查串列串列的內容以獲取名稱,如果為真則回傳名稱的索引。當我撰寫沒有 else 陳述句的代碼時,它可以作業,但是當我添加 else 陳述句時,它會跳過 if 條件并只應用 else 條件。誰能告訴我哪里出錯了?
outer_list = [['Mother', 'Sharon', 'f', 35, '170cm'], ['Father', 'Bruce', 'm', 37, '189cm'], ['Daughter', 'Amelia', 'f', 10, '137cm']]
name = 'Sharon'
index = -1
index_pos = 0
for inner_list in outer_list:
if name in inner_list:
index = 1
index_pos = index
else:
index_pos = -1
print(index_pos)
uj5u.com熱心網友回復:
在我看來,你應該
- 將 index = 1 放在 if 陳述句之前
- 將 index_pos 初始化為 -1,并洗掉 else 陳述句
那么列印或回傳index_pos應該是正確的
uj5u.com熱心網友回復:
當你在沒有 的情況下撰寫代碼時else,就像這樣
for inner_list in outer_list:
if name in inner_list:
index = 1
index_pos = index
僅當變數index_pos在任何子串列中找到匹配項時才分配該變數。然后就其未修改。
但是當你添加一個else案例時
else:
index_pos = -1
你正在重置你的位置。簡單地認為,您找到了一個包含名稱的子串列,因此您分配了位置并轉到下一個子串列,在那里您沒有找到名稱,現在 else 作業 - 重置已經找到的位置。這就是它出錯的地方。
break如果您認為只需要 name 的位置,則可以使用陳述句,該位置首先出現。然后它不會在其他子串列中進一步檢查,例如。
for inner_list in outer_list:
if name in inner_list:
index = 1
index_pos = index
break; #This ends the search!
您不需要 else 陳述句,除非您想強制檢查,否則名稱應該存在于所有串列中。
uj5u.com熱心網友回復:
您的問題不太清楚,但我猜您希望 index = 1 運行,這兩種情況都對嗎?如果是這樣,那么:
for inner_list in outer_list:
index = 1
if name in inner_list:
index_pos = index
else:
index_pos = -1
uj5u.com熱心網友回復:
只需break在 if 塊中添加一個
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/437104.html
