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:
始終小心使用“全局”是棘手的,在大多數情況下,您可以以簡單易讀的方式執行任何操作,因此我建議您從此腳本中刪除所有全局變量,您可以從函數返回參數,使用可變對象等。
添加回答
舉報