如何识别数组中是否只有一定数量的数字是连续的

时间:2015-10-18 21:32:32

标签: python arrays sorting

我一直在制作一个扑克模拟器,我已经设法创建了一个可以识别连续数字的数组的函数。

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。

4 个答案:

答案 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