当需要转换为另一个字符串时,如何将txt文件中的字符串转换为整数?

我正在尝试为我的游戏创建排行榜。游戏结束后,它会询问姓名并计算分数。但是,当我将名称和分数写入 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 文件的正确方法吗?有没有更好的方法来思考这个问题?我真的非常渴望帮助。


守候你守候我
浏览 105回答 1
1回答

德玛西亚99

几乎总是最好将代码的其余部分转换为最方便的格式,并尽可能靠近入口点。您的代码希望有一个字符串和一个整数。在将数据添加到结构之前,在从文件中读取数据时进行转换list_of_lists:score = 5name = "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”格式的行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python