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

2024-04-16 08:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码:

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。你知道吗


Tags: 代码用户消息numbermessage列表langfor
1条回答
网友
1楼 · 发布于 2024-04-16 08:17:12

你好像比较的数值不对。您正在尝试将字符串“5”与整数5进行比较。你知道吗

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

注意5左右的引号。你知道吗

例如:

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

第一个返回False,第二个返回True。你知道吗

在遍历列表时,也不应该从列表中删除项。相反,尝试创建一个副本或使用列表理解。你知道吗

相关问题 更多 >