Есть ли лучший способ написать эти функции - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь создать 5-ти барабанный игровой автомат. Мне было интересно, есть ли более быстрый способ использования моей функции только один раз вместо нескольких раз, чтобы вернуть выбранные значения для каждого барабана. Каждый барабан имеет 3 символа. функция перемешивает массив, затем должна случайным образом выбрать элемент и удалить его из массива, чтобы одни и те же символы не появлялись на одном барабане дважды. Я использую код ниже 5 раз (для каждого барабана), но мне было интересно, могу ли я просто использовать одну функцию и сбросить ее для каждого барабана, как только 3 элемента были выбраны и удалены.

def my_function():

symbolsreel1 = ['Symbol1', 'Symbol2', 'Symbol3', 'Symbol4', 'Symbol5', ' 
Symbol6', 'Symbol7', 'Symbol8', 'Symbol9',
        'Symbol10', 'Symbol11', 'Symbol12',]


random.shuffle(symbolsreel1)
symbolItem = random.choice(symbolsreel1)
symbolsreel1.remove(symbolItem)


return(symbolItem)

a1 = my_function()
b1 = my_function()
c1 = my_function()

def my_function():

symbolsreel2 = ['Symbol1', 'Symbol2', 'Symbol3', 'Symbol4', 'Symbol5', 
'Symbol6', 'Symbol7', 'Symbol8', 'Symbol9',
        'Symbol10', 'Symbol11', 'Symbol12',]


random.shuffle(symbolsreel2)
symbolItem = random.choice(symbolsreel2)
symbolsreel2.remove(symbolItem)


return(symbolItem)

a2 = my_function()
b2 = my_function()
c2 = my_function()

Я делаю это 5 раз и печатаю следующее

print (a1, "\t", a2, "\t", a3, "\t", a4, "\t", a5)
print (b1, "\t", b2, "\t", b3, "\t", b4, "\t", b5)
print (c1, "\t", c2, "\t", c3, "\t", c4, "\t", c5)

1 Ответ

2 голосов
/ 31 марта 2019

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

Просто используйте random.shuffle (), как у вас, и затемвернуть сразу 3 первых элемента:

def my_function():
    symbolsreel = ['Symbol1', 'Symbol2', 'Symbol3', 'Symbol4', 'Symbol5', 'Symbol6', 'Symbol7', 'Symbol8', 'Symbol9', 'Symbol10', 'Symbol11', 'Symbol12',]
    random.shuffle(symbolsreel)
    return symbolsreel[:3]

[a1, b1, c1] = my_function()

Если выбранные символы одинаковы на всех 5 барабанах, то вы также можете сделать все 5 барабанов за один вызов функции:

def my_function():
    symbolsreel = ['Symbol1', 'Symbol2', 'Symbol3', 'Symbol4', 'Symbol5', 'Symbol6', 'Symbol7', 'Symbol8', 'Symbol9', 'Symbol10', 'Symbol11', 'Symbol12',]
    reels = []
    for i in range(5):
        random.shuffle(symbolsreel)
        reels[i] = symbolsreel[:3]
    return reels

[[a1, b1, c1], [a2, b2, c2], [a3, b3, c3], etc...] = my_function() # replace "etc..." with actual code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...