簡體   English   中英

對於循環語句不讀取if語句繼續下一次迭代

[英]For loop statement not reading if statement to continue to next iteration

我的代碼看起來像這樣:

for item in items:

    if item.data["position"] == '5':
        item.delete() 
        continue
    elif item.data["lang"] == 'SPA':
        message_body = my_message_spa[item.data["position"]]
    else:
        message_body = my_message_eng[item.data["position"]] # English (default)

    message = client.messages.create(
        item.data["phone_number"],                    
        body=message_body,
        from_="xxxx"                           
    )
    # increment the position for this user
    item.data["position"]+=1

此代碼旨在向用戶發送消息。 Items是包含用戶電話號碼,日期,語言和位置的字典列表。 位置是指它們在消息序列中的位置。 我想檢查用戶的位置,如果他們已經收到5消息,那么它應該從列表中刪除並繼續下一個用戶。 如果用戶的位置<5那么它應該進入else if語句並根據滿足的條件發送消息。

詞典列表具有以下結構:

{'phone_number': '+1234567890', 'position': 5, 'lang': 'ENG', 'Date': '2018-08-17 00:03:46'}
{'phone_number': '+0987654321', 'position': 2, 'lang': 'ENG', 'Date': '2018-12-18 07:10:47'}

代碼工作正常,我添加/測試的新部分是if語句檢查位置,但似乎if語句根本沒有被調用,直接到下面的elif檢查'lang'並發送消息並增加用戶的位置。 在我的情況下,用戶的位置增加到6

您似乎錯誤地比較了該值。 您正在嘗試將字符串“5”與整數5進行比較。

if item.data["position"] == '5':

請注意5左右的報價。

例如:

print(1 == "1")
print(1 == 1)

第一個返回False,第二個返回True。

在迭代它時,您也不應該從列表中刪除項目。 而是嘗試創建副本或使用列表理解。

暫無
暫無

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

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