为什么这个功能不打印它应该的东西

时间:2015-10-18 19:58:16

标签: python arrays return boolean

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命令。此功能在没有退货的情况下可以正常工作,但是一旦我将其放入,playerHand将继续打印,但handstrength则不会。

1 个答案:

答案 0 :(得分:2)

试试这个:

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不仅会从循环中退出,而且会退出整个函数。

但是,潜伏着一个更糟糕的错误。请注意,如果检查失败,您应该只退出该函数,否则您必须保持循环。我们确定只有之后我们退出循环才有效,所以逻辑的一部分必须循环之外。