为什么这个函数不打印它应该打印的内容

why won't this function print what it's supposed to

def straightCheck(playerHand):
    playerHand.sort()
    print(playerHand)
    for i in range(len(playerHand)-1):
            if playerHand[i] != playerHand [i+1] - 1:
                handstrength = 0
                return False
                break
            else:
                handstrength = 5
                return True
    print(handstrength)

x = [5,2,3,4,1]
straightCheck(x)

我是编程新手,还没有掌握 return 命令。这个函数在没有 returns 的情况下也能正常工作,但是一旦我把它们放进去,playerHand 将继续打印,但 handstrength 不会。

试试这个:

def straightCheck(playerHand):
    playerHand.sort()
    print(playerHand)
    for i in range(len(playerHand)-1):
        if playerHand[i] != playerHand[i+1] - 1:
            handstrength = 0
            print(handstrength)
            return False
    handstrength = 5
    print(handstrength)
    return True

一条return指令终止一个函数的执行,这意味着之后的代码将永远不会执行。因此,如果您需要打印一些东西,请在返回之前打印。此外,break 是不必要的,因为 return 不仅会退出循环,还会退出整个函数。

不过,潜伏着一个更严重的错误。请注意,只有在检查失败时才应退出函数,否则必须继续循环。我们将确保手牌仅在 我们退出循环后才有效,因此该部分逻辑必须 循环之外。