为了账号安全,请及时绑定邮箱和手机立即绑定

如何在特定条件下使用另一个函数跳出while循环?

如何在特定条件下使用另一个函数跳出while循环?

慕桂英4014372 2021-12-16 15:49:52
我正在尝试使用在我的 while 循环中运行的另一个函数在某些条件下打破它。我一直在编写练习代码来尝试尝试,但它似乎并没有中断……它只是无限运行global testdef is_True():    test = Truefor i in range(5):    test = False    print("Run number:",i)    while(test==False):        print("the is_True method hasn't been called yet")        is_True()        print("The is__True method was called")
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

你把global语句放在错误的地方。它在函数中表明它test不是局部变量。一个global在全球范围内声明基本上是一个无操作。


def is_True():

    global test

    test = True

也就是说,尽可能避免使用全局变量。有is_True回报True,而不是和返回值分配给test在呼叫范围内。


def is_True():

    return True


while not test:

    print("...")

    test = is_True()

    print("...")


查看完整回答
反对 回复 2021-12-16
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

修改 is_True() 函数:


def is_True():

    return True

并且,在循环内,将其分配给测试:


test = is_True()


查看完整回答
反对 回复 2021-12-16
?
DIEA

TA贡献1820条经验 获得超2个赞

许多其他答案都提到了如何解决这个问题,但我认为解释为什么这不起作用也会有帮助,以帮助将来。

在 中is_True,当您分配给 test 时,您正在创建一个新的局部变量,而不是引用名为 的全局变量test。如果要引用全局,请添加global testis_True. 这将告诉 python 您要引用全局变量,而不是创建一个新的本地变量。

当然,您可能不应该为此使用全局变量,因此更好的解决方案是返回Truefromis_True()和 do test = is_True()


查看完整回答
反对 回复 2021-12-16
  • 3 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信