当转换为另一个字符串时,如何将文本从txt文件转换为整数?蟒蛇

时间:2020-10-12 18:36:51

标签: python integer

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

1 个答案:

答案 0 :(得分:0)

几乎总是最好将您的代码转换为最适合其余代码的格式,并尽可能靠近入口点。您的代码希望有一个字符串和一个整数。在从文件中读取数据时进行转换,然后将其添加到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]整数”格式的行。