Python 打破内部功能

Python Break Inside Function

我正在使用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 以外的值) 但是,我想使用一个函数,因为它在其他时候可能会有很大帮助。

感谢您的帮助。

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

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

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

函数不能 break 代表其调用者。 break 在句法上必须在循环内。

您想使用 return,而不是 break

break 用于停止循环。

The break statement, like in C, breaks out of the smallest enclosing for or while loop.

return用于退出函数,return一个值。你也可以returnNone

break 关键字只能在您的循环示例中使用,并且必须在循环范围内。

仅将函数更新为 return 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. 不能在您程序的其他部分重复使用

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