我正在制作一个用于掷骰子的python脚本。除了一点之外,我得到了一切。当有人连续4次滚动时,它应滚动另外4个骰子 我基本上想检查数组中接下来的四个数字是否与之前的数字相同,以检查“组合”。
例如:
[4,4,4,4]等于true,另外4个随机整数被添加到数组
[4,3,1,4]等于假。
有谁知道我这样做?
提前致谢!
答案 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