2 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
這里有一些注意事項(xiàng):
為什么要
LetterAScreen
在循環(huán)中創(chuàng)建新對(duì)象?使用全局變量時(shí)要小心,通常還有其他方法可以解決這個(gè)問題。
我不知道Identifier
該類是做什么的,但猜測(cè)該類的fn_compare
功能會(huì)改變where
變量嗎?此外,Identifier
在每次調(diào)用identity
函數(shù)時(shí)創(chuàng)建一個(gè)新函數(shù)似乎是您應(yīng)該更改的內(nèi)容。
話雖如此,該verifier
方法需要調(diào)整如下:
def verifier(self):
global where
count = 1
while (count>0 and where != 1):
print ("try again")
self.identity()
count += 1
print ("correct")
您不應(yīng)該將全局where變量分配給本地變量,這會(huì)導(dǎo)致問題,因?yàn)楸镜刈兞坎粫?huì)在循環(huán)中更新。您可以where直接與此全局變量進(jìn)行比較。我還刪除了run變量,您正在LetterAScreen類的一個(gè)實(shí)例中執(zhí)行,因此您可以調(diào)用identityself 對(duì)象上的方法(類似于thisJS 中的 a )。

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,您可能不需要在方法“驗(yàn)證器”中創(chuàng)建新實(shí)例(創(chuàng)建實(shí)例時(shí)已經(jīng)調(diào)用了方法,您可以使用“self”變量訪問實(shí)例。因此,而不是
run=LetterAScreen()
run.identity()
寫
self.identity()
也可以不使用復(fù)雜的“全局”方法,而是創(chuàng)建像 self.verify 這樣的實(shí)例變量并在“identify”中更改它
class LetterAScreen:
def __init__(self):
self.verify = 0
不定式循環(huán)通常是這樣創(chuàng)建的
while True:
始終小心使用“全局”是棘手的,在大多數(shù)情況下,您可以以簡(jiǎn)單易讀的方式執(zhí)行任何操作,因此我建議您從此腳本中刪除所有全局變量,您可以從函數(shù)返回參數(shù),使用可變對(duì)象等。
添加回答
舉報(bào)