@weRifiCatoR
Начинающий программист

Как не повторять рандомный вывод со списка?

Есть следующий простой код:
import random

for i in range(15):
    a = random.choice(["вперед", "назад", "вверх", "вниз"])

    print(a)


Как мне сделать так, чтобы если например предыдущие рандомное значение было вперед, то в последующем выводе сделать так что б значение не равнялось вперед.

Нужно сделать так что б именно в последующем выводе не выводилось предыдущие значение, то есть не так что б его вообще теперь не было.

Думаю понятно объяснил свою цель.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 3
@MrColdCoffee
web
import copy
import random

words = ["вперед", "назад", "вверх", "вниз"]
first = ''
for i in range(15):
    a = random.choice(words)
    if a == first:
        dopseq = words.copy()
        dopseq.remove(first)
        a = random.choice( dopseq )
    first = a
    print(a)
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
import random
previous = ''
a = ''
for i in range(15):
    while a == previous:
        a = random.choice(["вперед", "назад", "вверх", "вниз"])
    previous = a
    print(a)
Ответ написан
@mkone112
Начинающий питонист.
import random
words = {'вперед', 'назад', 'вверх', 'вниз'}
a = None
for _ in range(15):
    a = random.choice(tuple(words - {a}))
    print(a)

Есть еще вариант для всяких извращенцев:
import random

for _ in range(15): print(a := random.choice(tuple({'вперед', 'назад', 'вверх', 'вниз'} - {locals().get('a')})))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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