【问题标题】:How to identify if only a certain amount of numbers in an array are consecutive如何识别数组中是否只有一定数量的数字是连续的
【发布时间】:2015-10-18 21:32:32
【问题描述】:

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

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)

唯一的问题是我希望函数在数组长度大于5时识别数组中的5个连续数字。例如:我希望数组[1,2,3,4,5,6,7]返回True但我也想要数组[1,3,4,5,6,7,9] 返回 True。

【问题讨论】:

    标签: python arrays sorting


    【解决方案1】:

    您返回 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
    

    【讨论】:

      【解决方案2】:

      现在您检查数字是否不连续,然后返回 false。我认为您可以更好地检查数字是否连续,如果是,则提高一个计数器,如果不是,则将其重置。这样你就知道有多少个数字是连续的。如果是 5 或更高,您应该返回 True。

      【讨论】:

        【解决方案3】:

        如果你有一个工作函数,你可以循环处理所有 5 张牌组:

        for i in range(len(values) - 4):
            is_straight = straightCheck(values[i:i+5])
            if is_straight:
                break
        print(is_straight)
        

        【讨论】:

          【解决方案4】:
          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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-04-05
            • 2011-01-10
            • 1970-01-01
            • 2013-05-12
            • 2016-08-26
            • 2013-08-02
            • 1970-01-01
            相关资源
            最近更新 更多