For循环语句不读取if语句以继续下一次迭代

时间:2018-12-18 08:09:16

标签: python for-loop if-statement twilio continue

我有如下代码:

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

此代码用于向用户发送消息。 项目是词典列表,其中包含用户的电话号码,日期,语言和位置。 位置是指它们在消息序列中的位置。 我想检查一个用户的位置,如果他们已经收到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

1 个答案:

答案 0 :(得分:3)

您似乎在错误地比较该值。您正在尝试将字符串“ 5”与整数5进行比较。

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

请注意5前后的引号。

例如:

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

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

在遍历列表时,也不应从列表之类的内容中删除项目。而是尝试创建副本或使用列表推导。

相关问题