2017-10-19 14 views
1

J'ai un jeu de test réflexe et j'ai mis en place un fichier texte qui stocke le nom de l'utilisateur et le score avec un espace entre les deux. Comment trier le fichier texte numérique pour que les chiffres les plus bas sont en haut et plus haut au basComment lire un classement à partir d'un fichier texte et trier du score le plus bas au plus élevé?

Par exemple,

Ben 1,43

Eric 3,53

Steve 7,45

I vouloir inclure les 2 décimales.

code:

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() 

Répondre

1

oeil à ce lien https://wiki.python.org/moin/HowTo/Sorting cela vous aidera à tout type de genre dont vous avez besoin.

mais pour faire ce que vous demandez, vous devrez effectuer une sorte avant d'imprimer le leaderboard

Une sorte simple ascendant est très facile - il suffit d'appeler la fonction trié(). Il retourne une nouvelle liste triée:

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

devient alors

[1, 2, 3, 4, 5] 

Vous pouvez également utiliser la méthode list.sort() d'une liste. Il modifie la liste sur place (et renvoie None pour éviter la confusion). Habituellement, c'est moins pratique que trié() - mais si vous n'avez pas besoin de la liste originale, c'est un peu plus efficace.

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

J'ai édité ma réponse s'il vous plaît laissez-moi savoir si je dois faire plus de changements pour en faire une réponse efficace –

+0

Bien fait. Bon travail. –

+0

Comment puis-je trier le fichier texte? – Dargon111