我正在尝试为我的游戏创建排行榜。游戏结束后,它将询问姓名并计算分数。但是,当我将Name和Score写入leaderboard.txt文件并尝试再次将它们导入时,我无法将数字从字符串转换回int形式。我需要将其转换回int,以便可以按获得的最高得分对排行榜进行排序,还是可以?
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_of_lists.append(list_line)
for x in range(0,len(list_of_lists)):
if list_of_lists[x][1].isdigit == True:
x = int(x)
print(list_of_lists)
这不起作用,数字保持字符串,但是没有错误出现。我真的不知道我在想什么。这是将名称和分数写入.txt文件的正确方法吗?有没有更好的方法来考虑这一点?我真的很渴望帮助。
几乎总是最好将您的代码转换为最适合其余代码的格式,并尽可能靠近入口点。您的代码希望有一个字符串和一个整数。从文件中读取数据时进行转换,然后将其添加到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)
这样,其中包含的内部数据结构list_of_lists
将完全包含程序其余部分所需的内容。无需后续转换。您会注意到我的示例省略了第二个for
循环;我们在初始读取时处理了转换。
int
是这里的新概念。但是,通过在文件读取循环中执行此操作,可以避免在后续循环中进行其他后处理。
单独说明一下,如果输入文件中的某行不符合预期,最好对要发生的事情有所了解。输入验证。例如,您可能希望安静地跳过空白行,并且可能要向STDERR发出警告,然后跳过覆盖所有不遵循“ string [space] integer”格式的行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句