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

如何在满足条件时结束循环?

如何在满足条件时结束循环?

达令说 2022-01-05 19:46:45
按照我刚才的问题在这里,今天我的问题是有关的。我有一个不断更新的全局变量,并将该变量传递给一个函数。该函数由循环和条件语句组成。我希望循环在条件满足时结束,但它继续循环。这是我的代码。class LetterAScreen:    def identity(self):         global where        lol=Identifier()        lol.fn_compare()        print where    def verifier(self):        global where        verify=where        if verify != 1:            while (count>0):                print ("try again")                run=LetterAScreen()                run.identity()                run.verifier                print ("try again")                count += 1        else:            print ("correct")“正确”是当变量变为 1 时。否则,它是不正确的,用户应该再试一次。输出最终看起来像这样。#incorrect inputs19try againtry again19try againtry again19try againtry again19try againtry again19try againtry again#correct inputs but loop doesn't end1try againtry again1try againtry again1try againtry again1try againtry againIdentifier 类的基本部分只是更新变量。我相信问题出在我分享的课程上。我真的不熟悉这是如何工作的。我希望你能帮助我。
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

这里有一些注意事项:

  • 为什么要LetterAScreen在循环中创建新对象?

  • 使用全局变量时要小心,通常还有其他方法可以解决这个问题。

我不知道Identifier该类是做什么的,但猜测该类的fn_compare功能会改变where变量吗?此外,Identifier在每次调用identity函数时创建一个新函数似乎是您应该更改的内容。

话虽如此,该verifier方法需要调整如下:

def verifier(self):

    global where

    count = 1

    while (count>0 and where != 1):

        print ("try again")

        self.identity()

        count += 1

    print ("correct")

您不应该将全局where变量分配给本地变量,这会导致问题,因为本地变量不会在循环中更新。您可以where直接与此全局变量进行比较。我还删除了run变量,您正在LetterAScreen类的一个实例中执行,因此您可以调用identityself 对象上的方法(类似于thisJS 中的 a )。


查看完整回答
反对 回复 2022-01-05
?
喵喵时光机

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

首先,您可能不需要在方法“验证器”中创建新实例(创建实例时已经调用了方法,您可以使用“self”变量访问实例。因此,而不是


run=LetterAScreen()

run.identity()


self.identity()

也可以不使用复杂的“全局”方法,而是创建像 self.verify 这样的实例变量并在“identify”中更改它


class LetterAScreen:

    def __init__(self):

        self.verify = 0

不定式循环通常是这样创建的


while True:

始终小心使用“全局”是棘手的,在大多数情况下,您可以以简单易读的方式执行任何操作,因此我建议您从此脚本中删除所有全局变量,您可以从函数返回参数,使用可变对象等。


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

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