Python:如何枚举列表并使用该列表的长度来查找值

2024-05-29 05:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python构建一个老虎机模拟器。我已按如下方式设置卷盘:

Reels = [[10,9,4,5,7,4,9,2,6,7,3,4,9,3,4,9,6,5,4,11,8,9,11,2,4,1,9,10,4,9,10,6,4,9,1,5,4,9,1,10,3,8,6,4,9,1,8],
            [4,3,5,4,3,5,2,8,4,1,8,10,1,2,9,8,11,2,8,5,6,11,3,4,2,8,4,7,6,10,8,7,9,4,1,6,8,4,2,9,8,3,5,4,10,8],
            [1,9,4,2,5,1,6,9,2,5,9,2,10,9,4,8,9,11,2,5,8,9,10,4,1,10,9,2,10,5,9,7,5,6,8,9,7,3,10,6,2,9,5,8,3,1,10,3],
            [8,10,3,8,7,3,9,8,10,11,3,10,9,6,8,10,11,6,5,3,8,1,4,9,5,8,1,4,3,8,1,5,9,10,8,3,9,4,3,8,9,4,6,11,3,8,9,7,10,11],
            [4,11,1,6,3,9,5,10,9,5,8,11,10,3,1,4,10,3,9,4,7,3,9,10,4,3,1,5,10,6,5,8,4,6,9,1,5,10,8,9,5,4,6,8,9,4,8,5,7,9]]

现在我需要从1到5遍历它们并构建一个3X5矩阵。我想从产生一个随机数开始,这个随机数决定了在卷轴上停止的位置。该值将是该卷盘上的中间值。然后,我需要添加顶部和底部的值(但是必须考虑中间的数字可能在卷带的开始或结束处)。我在if StopValue == Reels[i][len(Reels[i])]:行得到错误“列表索引超出范围”:

def spin():
    SpinValues = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]

    for i, object in enumerate(Reels):
        length = len(Reels[i])
        StopValue = random.randint(0,length)
        SpinValues[i][1] = Reels[i][StopValue]
        if StopValue == 0:
            SpinValues[i][0] = Reels[i][len(Reels[i])]
        else:
            SpinValues[i][0] = Reels[i][StopValue - 1]
        if StopValue == Reels[i][len(Reels[i])]:
            SpinValues[i][2] = Reels[i][0]
        else:
            SpinValues[i][2] = Reels[i][StopValue +1]
    print(SpinValues)

spin()

起初,我以为我可以用“for I in revels”来实现这一点,但我在这里读到一篇文章,建议使用“for index,object in enumerate(revels)”方法。你知道吗


Tags: inforlenifobject方式模拟器length
2条回答

要引用名为my_list的列表中的最后一项,必须使用

my_list[-1]

或者

my_list[len(my_list)-1]

而不是:

my_list[len(my_list)]

原因是在Python中,所有索引都从0开始,而不是从1开始

len(Reels[i])不是Reels[i]的有效索引。最后一个有效索引是len(Reels[i]) - 1

相关问题 更多 >

    热门问题