Help me. Рандомайзер

Hiranos

Новичок
Автор темы
1
0
Всем доброго времени суток! Нужна помощь, как сделать так чтобы рандомно из определенных позиций бот выбирал её и выводил. НО после того как он её вывел один раз чтобы он не выводил её более, тоесть попросту забыл о её как бы существовании. Возможно непонятно объяснил ну ссори. И да, желательно не скинуть готовый код а объяснить как это делается
 

Josski Molodoi

Активный
182
83
Создаёшь словарь, помещаешь значение в ключ а булево значение, которое показывает, использовалось ли значение, в само значение.
далее просто проходишь циклом по массиву, если значение ключа будет True - значит он уже использовался и его мы пропускаем.
Вот пример работы. Этот код никогда не выведет два одинаковых значения, а когда они кончатся - закончит работу.
1664513538285.png


Для твоего случая скорее подойдёт одинарных проход пока не будет найдено свободное значение, который выглядит вот так:

Python:
import random

values = {
    "Значение 1": False,
    "Значение 2": False,
    "Значение 3": True,
    "Значение 4": False,
    "Значение 5": False
}

def get_rand_value():
    while True:
        random_value = random.randint(1, 5)
        j = 0

        for k, v in values.items():
            j += 1

            if (j == random_value) and (not v):
                print(k)
                values[k] = True
                return

get_rand_value()
 
  • Нравится
Реакции: Hiranos
D

deleted-user-494704

Гость
Работаем с индексами, для выбора используем метод .pop(index) - вытаскивает элемент и удаляет его из списка.

Python:
values = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

random_index = randint(0, len(values)-1)
random_value = values.pop(random_index)

print(random_value, values)
# b ['a', 'c', 'd', 'e', 'f', 'g']