我一直在制作一个扑克模拟器,我已经设法创建了一个可以识别连续数字的数组的函数。
In [42]: x
Out[42]:
masked_array(data =
[[1 -- 1 1]
[3 -- 2 --]],
mask =
[[False True False False]
[False True False True]],
fill_value = 999999)
唯一的问题是我希望函数在数组长度大于5时识别数组中的5个连续数字。例如:我希望数组def straightCheck(playerHand):
playerHand.sort()
print(playerHand)
for i in range(len(playerHand)-1):
if playerHand[i] != playerHand [i+1] - 1:
return False
print(handstrength)
return True
print(handstrength)
返回True但我也想要数组[1,2,3,4,5,6,7]
返回True。
答案 0 :(得分:2)
你过早地回复False。相反,您可以保持到目前为止您已经看到的连续数量的运行记录,并在遇到打破条纹的数字时重置它。
def straightCheck(playerHand):
playerHand.sort()
tally = 1
for i in range(len(playerHand)-1):
if playerHand[i] != playerHand [i+1] - 1:
tally = 0
tally += 1
if tally >= 5:
return True
return False
答案 1 :(得分:1)
现在您检查数字是否不连续,然后返回false。我认为您可以更好地检查数字是否连续,如果是,则提高计数器,如果没有,则重置它。那样你就知道连续多少个数字了。如果是5或更高,则应返回True。
答案 2 :(得分:1)
如果你有一个工作功能,你可以在循环中处理所有5张卡片组:
for i in range(len(values) - 4):
is_straight = straightCheck(values[i:i+5])
if is_straight:
break
print(is_straight)
答案 3 :(得分:-2)
def straightCheck(playerHand):
playerHand.sort()
print(playerHand)
count = 0;
for i in range(len(playerHand)-1):
if playerHand[i] == playerHand [i+1] - 1:
count += 1
if count >= 5:
return True
else:
count = 0
return False