如何从文本文件中读取排行榜并从最低分到最高排序?

时间:2017-10-19 20:35:06

标签: python-3.x text-files

我有一个反射测试游戏并设置了一个文本文件,用于存储用户的名字和分数,中间有空格。如何以数字方式对文本文件进行排序,以使最低数字位于顶部,最高位于底部

E.g

Ben 1.43

Eric 3.53

史蒂夫7.45

我想要包含2位小数。

代码:

import time
import random
global start
global end
global score
def gameBegin():
    print('***************')
    print('* Reflex Game *')
    print('***************')
    print("\nPress Enter as soon as you see the word 'stop'.")
    print('Press Enter to Begin')
    input()

def gameStart():
    global start
    global end
    time.sleep(random.randint(1,1))
    start = time.time()
    input('STOP')
    end = time.time()
def gameScore():
    global start
    global end
    global score
    score=round(end-start,2)
    print (score)

def scorePrint():
    global score
    with open("Leaderboards.txt", "r+") as board:
        print (board.read())


def boardEdit():
    global score
    name = input('Enter Your Name For The Leader Board : ')
    board = open ("Leaderboards.txt","a+")
    board.write(name )
    board.write(" ")
    board.write(str(score) )
def boardSort():
    #HELP 

gameBegin()
gameStart()
gameScore()
scorePrint()
boardEdit()
boardSort()

1 个答案:

答案 0 :(得分:1)

查看此链接https://wiki.python.org/moin/HowTo/Sorting 这将帮助您完成所需的任何类型。

但要做你要求的事情,你需要在打印排行榜之前进行排序

简单的升序排序非常简单 - 只需调用sorted()函数即可。它返回一个新的排序列表:

sorted([5, 2, 3, 1, 4])

然后变成

[1, 2, 3, 4, 5]

您还可以使用列表的list.sort()方法。它就地修改列表(并返回None以避免混淆)。通常它比sorted()更不方便 - 但是如果你不需要原始列表,它会更有效率。

>>>a = [5, 2, 3, 1, 4]
>>>a.sort()
>>>a
[1, 2, 3, 4, 5]