L.Tan
L.Tan

Reputation: 31

How do you make a leaderboard in python?

I am working on a project for my school and I was wondering if there is a way to make a leaderboard in python? I am fairly new to python and so far, what I have done is get the user's input and store it in a text file. I'm not sure how to continue. Any help is appreciated, thanks!

x = 0

Name = [None]*1000
Class = [None]*1000
Score = [0]*100

# opens the text file called text_file
text_file = open("write.txt","a")

# puts in the values of the highest scores and "saves it" by closing and opening the file
def write_in_file():
    global text_file
    text_file.write(Name[x])
    text_file.write("\n")
    text_file.write(Class[x])
    text_file.write("\n")
    text_file.write(Score[x])
    text_file.write("\n")
    text_file.write("\n")
    text_file.close()
    text_file = open("write.txt","a")

# asks for player data and puts highest value in a file
for i in Name:
    Name[x] = input("Name:")
    Class[x] = input("Class:")
    Score[x] = input("Score:")
    write_in_file()
    print(Score)
    x += 1

Upvotes: 3

Views: 28705

Answers (2)

Zelpha
Zelpha

Reputation: 11

Here is a code that might help

import csv

score=input("whats ya score")
username=input("whats ya name")

with open ("protleader.csv", "a", newline='') as file:
    fields=['score', 'name']
    writer=csv.DictWriter(file, fieldnames=fields)
    writer.writerow({'score' : score, 'name' : username})

with open ("protleader.csv", "r") as file:
    sortlist=[]
    reader=csv.reader(file)
    for i in reader:
        sortlist.append(i)
for i in range(len(sortlist)):
    if i != 0:
        sortlist[i][0]=int(sortlist[i][int(0)])


print("")

print("Unsorted:")
for i in range(len(sortlist)):
    print(sortlist[i])


for i in range(555):
    for i in range(len(sortlist)-1):
        if i != 0:
            if sortlist[i][0] < sortlist[i+1][0]:
                change=sortlist[i]
                sortlist[i]=sortlist[i+1]
                sortlist[i+1]=change


print("")

print("Sorted and cut:")
for i in range(len(sortlist)-1):
    print(sortlist[i])

Upvotes: 1

PixelPioneer
PixelPioneer

Reputation: 4170

You can use pandas for making a leaderboard table. Here is a sample:

import pandas as pd

df = pd.DataFrame({'Name': ['x','y','z'],
                   'Class':  ['B','A','C'],
                    'Score' : [75,92,56]})
print (df)

Out[3]: 
  Class Name  Score
0     B    x     75
1     A    y     92
2     C    z     56


# changing order of columns
df = df.reindex_axis(['Name','Class','Score'], axis=1)

# appending
df.loc[3] = ['a','A', 96]

print (df)

Out[15]: 
  Name Class  Score
1    y     A     92
3    a     A     96
0    x     B     75
2    z     C     56

# sorting
df = df.sort(['Class', 'Score'], ascending=[1, 0])

print (df)

Out[16]: 
  Name Class  Score
3    a     A     96
1    y     A     92
0    x     B     75
2    z     C     56

Upvotes: 2

Related Questions