Для оператора цикла, не читающего, если оператор, чтобы продолжить к следующей итерации - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть код, который выглядит следующим образом:

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 голосов
/ 18 декабря 2018

Вы, кажется, сравниваете значение неправильно.Вы пытаетесь сравнить строку «5» с целым числом 5.

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

обратите внимание на кавычки около 5.

Например:

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

возвращает Falseдля первого и True для второго.

Вы также не должны удалять элементы из чего-то вроде списка при итерации по нему.Вместо этого попробуйте создать копию или использовать понимание списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...