【问题标题】:why won't this function print what it's supposed to为什么这个函数不打印它应该打印的内容
【发布时间】:2016-01-17 02:24:49
【问题描述】:
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 不会。

【问题讨论】:

  • 这个函数应该做什么?
  • 识别一个只包含连续数字的数组@Padraic
  • 您要使用handstrength 变量吗?
  • 是的,我在后面的函数中调用 straightCheck 时使用它
  • 然后我不会返回布尔值,我会 pastebin.com/S7ii8UcV,任何 if 测试的行为都与 if 0 将评估为 False 和 if 5 将评估为 True 所以你得到相同的结果行为并返回您要使用的实际值。设置handstrength = 5 只是在函数的本地范围内设置值,所以这些变量完全没有意义

标签: python arrays return boolean


【解决方案1】:

试试这个:

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

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

【讨论】:

  • 我想知道.. 循环有什么意义,如果它总是在第一个循环返回
猜你喜欢
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2014-12-15
  • 1970-01-01
相关资源
最近更新 更多