从文本文件中读取高分并运行

2024-04-19 07:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数学程序,是得分的球员,并输入他们的名字和得分到一个文本文件。在

我可以从文本文件中获取分数,但无法确定如何识别每个部分:name为string,score为int

它是这样输入到文件中的:

playername: 8

在文本文件中输入球员姓名和分数的代码是:(我将score设置为一个全局变量,它是从以前的函数中提取的。在

^{pr2}$

我试着用多种方法把数据给我。我努力把它分成名字和分数,然后按分数的降序排列。在

def highscore():
# --------------------------------------------
# sort scores from text file here
try:
    scores = open("score.txt", "r")
    for line in scores.readlines():
        line_parts = line.split(": ")
        if len(line_parts) > 1:
            line_parts = line_parts[-1].split("\n")
            score = line_parts[0]
        print(sorted(score))
except Exception:
    pass
# --------------------------------------------
close()

分数如下:

['7']
['4']
['9']
['1']

我需要的是:

['Player 1: 9']
['Player 2: 7']
['Player 3: 4']
['Player 4: 1']

Tags: name程序stringline数学名字分数int
1条回答
网友
1楼 · 发布于 2024-04-19 07:43:16

试试这个: 创建一个排序方法并将整个列表提供给sorted方法。在

def highscore():
#                       
# sort scores from text file here
try:
   scores = open("score.txt", "r")
   x = []   # place all your processed lines in here
   for line in scores.readlines():
       line_parts = line.split(": ")
       if len(line_parts) > 1:
           line_parts[-1] = line_parts[-1].replace("\n", "")
           x.append(line_parts)   # sorting uses lists
   print(sorted(x, key=sortByScore))   # get this out of for loop
except Exception:
    pass
#                       
close()

def sortByScore(inputPlayerScore):
    return inputPlayerScore[1]

更新:

我已经更新了代码并进行了测试。现在它起作用了。我一直在用python2.7

更新:2

很简单。只需将print命令移出for循环,就可以得到所需的输出。在

相关问题 更多 >