Задать вопрос
isildurrr
@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))


можно ли как-то заставить его обдумывать каждый рандом?
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
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)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
AST Москва
До 350 000 ₽
Wanted. Москва
До 250 000 ₽
14 янв. 2025, в 07:30
2000 руб./за проект
14 янв. 2025, в 05:34
30000 руб./за проект
14 янв. 2025, в 03:39
20000 руб./за проект