我遇到了一個奇怪的問題,嘗試除了我用來捕獲無效數據輸入到我正在寫的簡單黑傑克遊戲外的塊。 。使用Try和Except Block時出現'NoneType'錯誤
def PickNumberOfPlayers():
global log
try:
inputs = int(input("How Many Players Would You Like?: "))
PlayersNumber = inputs
log.write("How Many Players Would You Like?: \n")
return PlayersNumber
except ValueError:
print("Try Typing in A Valid Number")
log.write("Try Typing in A Valid Number\n")
PickNumberOfPlayers()
然後我有一個方法GameStart(),它開始了一些方法調用:
def GameStart():
global ListOfPlayers
for i in range(0, int(PickNumberOfPlayers())):
name = input("What Would You Like This Players Name To Appear As?:")
ListOfPlayers.update({name: Player(0, name)})
for key, value in ListOfPlayers.items():
value.AccountSetup()
value.Bet()
for key, value in ListOfPlayers.items():
value.PlayerDeal()
Dealer.Deal()
當我運行的代碼,並輸入正確的值(一個有效整數),沒有問題。當我第一次進入一個無效數字(字符串或字符)我得到相應的消息「,在一個有效的數字試着鍵入,然後當我輸入一個有效的整數我得到的錯誤 -
for i in range(0, int(PickNumberOfPlayers())):
TypeError: int() argument must be a string or a number, not 'NoneType'
任何主意?
'global'在這裏沒有必要。避免遞歸。改用while循環。對於日誌記錄,有日誌記錄模塊,它可以在屏幕上同時寫入並進行歸檔。而不是更新使用索引:'ListOfPlayers [name] = Player(0,name)'。一般情況下避免使用「全局」。 – Daniel