#python #python-3.x #loops #for-loop
Вопрос:
У меня есть следующий python для цикла, который должен циклически RANGE
повторяться несколько раз. Я указываю RANGE
в начале кода, поэтому, например, представьте, что диапазон равен 5.
Затем существует uuid_list, содержащий 2 uuid. Для каждого должно быть создано сообщение.
for i in range(RANGE):
data = MESSAGE[i]
message = data
mqtt_connection.publish(topic=TOPIC, payload=json.dumps(message),
qos=mqtt.QoS.AT_LEAST_ONCE)
print("Published: '" json.dumps(message) "' to the topic: " TOPIC)
t.sleep(20)
Поскольку я указал RANGE
как 5, я ожидаю результата в виде 5 сгенерированных сообщений для КАЖДОГО uuid. Однако с помощью приведенного выше кода я получаю только 5 сообщений для первого uuid.
Чтобы попытаться исправить это, я тоже пытался …
for i in range(RANGE):
data = MESSAGE[i 1]
message = data
mqtt_connection.publish(topic=TOPIC, payload=json.dumps(message),
qos=mqtt.QoS.AT_LEAST_ONCE)
print("Published: '" json.dumps(message) "' to the topic: " TOPIC)
t.sleep(20)
Это RANGE
все еще 5. Но теперь я получаю 8 сообщений для первого uuid и 2 для второго uuid.
Может ли кто-нибудь, пожалуйста, посоветовать, как data = MESSAGE[i]
следует указывать мою строку, чтобы достичь желаемого RANGE
для каждого uuid?
Комментарии:
1. Ваш вопрос не ясен. Что такое
MESSAGE
? Каковы его ценности? Где вы используетеuuid_list
, я не вижу этого в коде, который вы опубликовали.2. @Шива, теперь я включил весь код, чтобы ты мог его увидеть
Ответ №1:
Когда вы это сделаете for i in range(RANGE)
, i
значение будет варьироваться от 0 до 4, и это позволит получить доступ только к первым 5 элементам MESSAGE
Для RANGE = 5
и двух uuid MESSAGE
имеет 5 * 2 = 10 элементов. Чтобы получить все десять сообщений, вы можете либо сделать
for i in range(RANGE * len(uuid_list):
message = MESSAGE[i]
# rest of the code
или
for message in MESSAGE:
# rest of the code