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

2024-09-22 16:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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将不会


Tags: infalseforlenreturnifdefrange
1条回答
网友
1楼 · 发布于 2024-09-22 16:30:11

试试这个:

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不仅会退出循环,还会退出整个函数

不过,还有一只更难看的虫子潜伏着。注意,只有在检查失败时才应该退出函数,否则必须保持循环。我们将确保手只有在退出循环后才有效,因此部分逻辑必须在循环外

相关问题 更多 >