2 回答
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 )。
TA贡献1846条经验 获得超7个赞
首先,您可能不需要在方法“验证器”中创建新实例(创建实例时已经调用了方法,您可以使用“self”变量访问实例。因此,而不是
run=LetterAScreen()
run.identity()
写
self.identity()
也可以不使用复杂的“全局”方法,而是创建像 self.verify 这样的实例变量并在“identify”中更改它
class LetterAScreen:
def __init__(self):
self.verify = 0
不定式循环通常是这样创建的
while True:
始终小心使用“全局”是棘手的,在大多数情况下,您可以以简单易读的方式执行任何操作,因此我建议您从此脚本中删除所有全局变量,您可以从函数返回参数,使用可变对象等。
添加回答
举报