@isildurrr

Рандом телеграм бот генерирует результат, а потом ленится и выдает повтор, как исправить?

После запуска бота, он задумывается генерирует несколько случайных результатов, но потом начинает их чередовать.
man = ['Парни', 'Огурцы', 'Холостяки', "Гришани", "Карамельки", "Мошенники", "Грибники" ]
place = [ "Баку", "Германии",  "Майами", "летающей тарелки", "девятки", "больницы",]
prilag = ['Клевые', 'Безбашенные', 'Вонючие']
such = ['вареники', 'конюхи', 'кореша']
team = ['Аргентина', 'Ложка']
random_team0 = random.choice(man) + ' из ' + random.choice(place)
random_team1 = random.choice(prilag) + ' ' + random.choice(such)
team_name = [random.choice(team), random_team0, random_team1]

@bot.message_handler(commands = ['team'])
def team(message):
    random.shuffle(man)
    random.shuffle(place)
    random.shuffle(such)
    random.shuffle(prilag)
    random.shuffle(team)
    bot.send_message(message.from_user.id, random.choice(team_name))


можно ли как-то заставить его обдумывать каждый рандом?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@Vindicar
random_team0 = random.choice(man) + ' из ' + random.choice(place)
random_team1 = random.choice(prilag) + ' ' + random.choice(such)
team_name = [random.choice(team), random_team0, random_team1]

Этот код выполняется один раз при запуске бота, а не каждый раз при выполнении team(). Внеси его внутрь подпрограммы team().
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jerwright
@jerwright
while True: coding()
random_choice = ""
@bot.message_handler(commands = ['team'])
def team(message):
    local_random_choice = random.choice(team_name) #Рандомный элемент, который меняется после вызова команды
    global random_choice #Задаём глобальную переменную
    while random_choice == local_random_choice:
        local_random_choice = random.choice(team_name)
    random_choice = local_random_choice #После итераций замены рандомного элемента наконец меняем глобальную переменную
    bot.send_message(message.from_user.id, random_choice)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы