1 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
幾乎總是最好將代碼的其余部分轉(zhuǎn)換為最方便的格式,并盡可能靠近入口點(diǎn)。您的代碼希望有一個(gè)字符串和一個(gè)整數(shù)。在將數(shù)據(jù)添加到結(jié)構(gòu)之前,在從文件中讀取數(shù)據(jù)時(shí)進(jìn)行轉(zhuǎn)換list_of_lists:
score = 5
name = "Adam"
file = open("leaderboard.txt", "a+")
file.write(name+" ")
file.write(str(score)+"\n")
file.close()
file = open("leaderboard.txt", "r")
list_of_lists = []
for line in file:
list_line = line.split()
list_line[1] = int(list_line[1]) # This is the new code
list_of_lists.append(list_line)
print(list_of_lists)
這樣,您的內(nèi)部數(shù)據(jù)結(jié)構(gòu)list_of_lists將包含程序其余部分所需的內(nèi)容;無需進(jìn)行后續(xù)改造。您會(huì)注意到我的示例省略了第二個(gè)for循環(huán);我們在初始讀取時(shí)處理了轉(zhuǎn)換。
int是這里的新概念。但是,通過在文件讀取循環(huán)中執(zhí)行此操作,您可以避免在后續(xù)循環(huán)中進(jìn)行額外的后處理。
作為一個(gè)單獨(dú)的說明,如果輸入文件中的一行不符合預(yù)期,通常最好了解一下您希望發(fā)生的情況;輸入驗(yàn)證。例如,您可能想悄悄地跳過空白行,并且可能想向 STDERR 發(fā)出警告,然后跳過任何不遵循“string[space]integer”格式的行。
添加回答
舉報(bào)