有没有更好的方法来编写这些功能

时间:2019-03-31 19:25:03

标签: python-3.x function

我正在尝试创建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 个答案:

答案 0 :(得分:2)

如果您已经对符号列表进行了改组,则无需从中随机选择,因为元素已经被随机排列了。

只需像您一样使用random.shuffle(),然后一次返回前三个元素:

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