python keyerror5_我的python程序總是返回「KeyError:20」

在尝试从名为'playerScores.txt'的文本文件中获取每个级别最高得分玩家时,遇到了'KeyError:20'的问题。代码遍历文件,根据级别和分数将玩家分配到不同的字典中,但在第六十九行(P_L1 = players_TS[H_L1])出现错误。可能是由于字典players_TS中不存在键'H_L1'导致的。
摘要由CSDN通过智能技术生成

我已經寫了一個python程序,它應該會返回每個關卡的最高得分玩家,但是它會一直返回第69行的「KeyError:20」(P_L1 = players_TS [ H_L1]),我無法解決如何解決這個問題。在我的代碼我打開名爲「playerScores.txt」文本文件,該文件的格式是這樣的:

月亮,3,15

StarPlayer,2.18

艾莉,5,9

這裏是我的代碼:

我的python程序總是返回「KeyError:20」

print("The highest scorers for each leve are:\n")

PS3=open("PlayerScores.txt","r").read().split("\n")

level1_scores=[]

players_TS={}

level2_scores=[]

players_T2={}

level3_scores=[]

players_T3={}

level4_scores=[]

players_T4={}

level5_scores=[]

players_T5={}

for line in PS3:

lines=line.split(",")

player=lines[0]

level=lines[1]

score=lines[2]

erros=open("scoreboard_errorlog.text","w")

if int(score)>20:

errors.write(score)

if int(level)>5:

errors.write(level)

if int(level)==1:

level1_scores.append(int(score))

players_TS.setdefault(score,[]).append(player)

if int(level)==2:

level2_scores.append(int(score))

players_T2.setdefault(score,[]).append(player)

if int(level)==3:

level3_scores.append(int(score))

players_T3.setdefault(score,[]).append(player)

if int(level)==4:

level4_scores.append(int(score))

players_T4.setdefault(score,[]).append(player)

if int(level)==5:

level5_scores.append(int(score))

players_T5.setdefault(score,[]).append(player)

H_L1=max(level1_scores)

P_L1=players_TS[H_L1]

H_L2=max(level2_scores)

P_L2=players_T2[H_L2]

H_L3=max(level3_scores)

P_L3=players_T3[H_L3]

H_L4=max(level4_scores)

P_L4=players_T4[H_L4]

H_L5=max(level5_scores)

P_L5=players_T5[H_L5]

print("Level\tPlayer name\tScore\nLevel 1\t",P_L1,"\t",H_L1,"\nLevel 2\t",P_L2,"\t",H_L2,"\nLevel 3\t",P_L3,"\t",H_L3,"\nLevel 4\t",P_L4,"\t",H_L4,"\nLevel 5\t",P_L5,"\t",H_L5)

幫助將不勝感激。

+0

您可以從確定錯誤發生的位置開始。 –

+0

'erros = open(..''和'errors.write(...'是一個錯字 –

+0

@ScottHunter)對不起,我忘了指定 - 它是69行(P_L1 = players_TS [H_L1]) –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值