Python检查数组中的下一个是否相同

时间:2017-03-14 22:16:43

标签: python

我正在制作一个用于掷骰子的python脚本。除了一点之外,我得到了一切。当有人连续4次滚动时,它应滚动另外4个骰子 我基本上想检查数组中接下来的四个数字是否与之前的数字相同,以检查“组合”。

例如:

[4,4,4,4]等于true,另外4个随机整数被添加到数组

[4,3,1,4]等于假。

有谁知道我这样做?

提前致谢!

6 个答案:

答案 0 :(得分:0)

我怀疑你缺少的那部分是全部功能,适用于理解。像

这样的东西
if all([rolls[i+n] == rolls[i] for n in range(4)]):
    # Perform 4 more rolls

理解(对于列表表达式中的循环)生成四个布尔结果; 所有决定所有元素是否为 True 。仅供参考,"或" 所有的版本是任何功能。

答案 1 :(得分:0)

你可以直接提取最后4个卷,将它们转换成一个集合,看看是否只有一个元素。

您还需要确保至少有4次滚动,例如:True不返回[4,4]

def test_last_four(rolls):
    if len(rolls) >= 4 and len(set(rolls[-4:])) == 1:
        return rolls[-1]

print(test_last_four([1, 4, 4, 4, 4]))
#=> 4
print(test_last_four([1, 4, 3, 1, 4]))
#=> None
print(test_last_four([4, 4]))
#=> None

答案 2 :(得分:0)

def checkForBeingTheSame(listOfRoles):
    if listOfRoles[-1]==listOfRoles[-2]:
        if listOfRoles[-2]==listOfRoles[-3]:
            if listOfRoles[-3]==listOfRoles[-4]:
                return True
    return False

你看起来像这样吗?(上) 你还可以添加4个这样的随机数字。(bottem)

def checkForBeingTheSame():
    global listOfRoles
    if listOfRoles[-1]==listOfRoles[-2]:
        if listOfRoles[-2]==listOfRoles[-3]:
            if listOfRoles[-3]==listOfRoles[-4]:
                for i in range(4):
                    listOfRoles.append(randint(1,6))
                return True
    return False

答案 3 :(得分:0)

a = [1, 2, 4, 4]
print a.count(4) == len(a)

a = [4, 4, 4, 4]
print a.count(4) == len(a)

返回

False
True

答案 4 :(得分:0)

使用set应该有效:

list1=[4,4,4,4]
list2=[4,4,3,4]
comparison= set(list1).intersection(list2)
if len(comparison) > 1:
    print("No Combo found")
    #or a whatever you require to be done here to show no combo

答案 5 :(得分:0)

我从你的问题中收集到的是你要检查

  • 列表中的所有元素都是相同的
  • 如果是,则列表中包含哪个值。

我认为最Pythonic解决方案是将您的列表转换为集合,例如

if set(dice_rolls) == {4}:
    # roll logic