Python打破内部功能

时间:2016-09-20 19:59:25

标签: python function python-3.x break

我正在使用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: '))(只要已经分配给0以外的其他内容) 但是,我想使用一个函数,因为其他时候它可以帮助很多。

感谢您的帮助。

4 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:4)

一个函数不能代表其调用者breakbreak必须在语法中处于循环内。

答案 2 :(得分:0)

您想使用return,而不是break

break用于停止循环。

  

break语句与C语句一样,突破了最小的封闭for或while循环。

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

答案 3 :(得分:0)

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. 无法在程序的其他部分重复使用
  4. 考虑这些原因来改进您的代码。