【问题标题】:Python Break Inside Function [duplicate]Python打破内部函数[重复]
【发布时间】:2016-09-20 19:59:25
【问题描述】:

我正在使用 Python 3.5,我想在函数中使用 break 命令,但我不知道如何。 我想使用这样的东西:

def stopIfZero(a):
    if int(a) == 0:
        break
    else:
        print('Continue')

while True:
    stopIfZero(input('Number: '))

我知道我可以使用这个代码:

while True:
    a = int(input('Number: '))
    if a == 0:
        break
    else:
        print('Continue')

如果你不关心print('Continue') 部分,你甚至可以这样做: while a != 0: a = int(input('Number: '))(只要 a 已经分配给 0 以外的东西) 但是,我想使用一个函数,因为其他时候它会很有帮助。

感谢您的帮助。

【问题讨论】:

  • 您的stopIfZero 函数正试图做的比它应该做的更多。尝试将功能集中在一项任务上。

标签: python function python-3.x break


【解决方案1】:

通常,这是通过返回一些值来完成的,该值可让您决定是否要停止 while 循环(即某些条件是真还是假):

def stopIfZero(a):
    if int(a) == 0:
        return True
    else:
        print('Continue')
        return False

while True:
    if stopIfZero(input('Number: ')):
        break

【讨论】:

  • 我知道你可以做到这一点,但想知道你可以用不同的方式做到这一点。我希望是的,你可以做到这一点,它很臭你不能。谢谢你的回答,这就是我要问的,即使不是我想要的。
  • @nedla2004 适用于break 的内容也适用于continue
【解决方案2】:

函数不能代表其调用者breakbreak 必须在语法上位于循环内。

【讨论】:

    【解决方案3】:

    您想使用return,而不是break

    break 用于停止循环。

    break 语句,就像在 C 中一样,跳出最小的封闭 for 或 while 循环。

    return 用于退出函数并返回一个值。您也可以返回None

    【讨论】:

      【解决方案4】:

      break 关键字仅用于循环示例,并且必须在循环范围内。

      更新您的函数以仅返回 TrueFalse

      def is_zero(value):
          if value == 0:
              return True
          return False
      

      然后在你的循环中,像这样简单地使用:

      while True:
          try:
              value = int(input("Enter a value (0 to exit): "))
          except ValueError:
              # user entered a non-numeric value (e.g. a letter)
              # try asking again immediately instead of crashing :)
              print('Use numbers only, please')
              continue
      
          if is_zero(value):
              break
      
          print('Good entry. Continuing...')
      

      您的 stopIfZero 函数也有些重载(即不仅有 1 个职责),因为它不仅仅检查值是否为零。比如它:

      1. 将参数转换为int
      2. 打印一条消息,然后
      3. 不可在程序的其他部分重复使用

      考虑这些原因来改进您的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 2017-06-04
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多