Python :: Aufgabe #291
2 Lösungen

Ranking von Punktzahlen
Anfänger - Python
von JKooP
- 04.10.2020 um 13:02 Uhr
Bei einer Sportveranstaltung wurden die erreichten Punkte in eine Punkteliste überführt.
Jetzt gilt es herauszufinden, wer die meisten und wer die wenigsten Punkte in der Liste hat, um daraus ein sogenanntes Ranking zu erstellen.
Punkteliste = [14, 11, 19, 7, 14, 8, 5]
Ranking1 = [2, 3, 1, 5, 2, 4, 6]
Da es bei Sportveranstaltungen bei Vergabe von zwei 2. Plätzen oft keinen 3. Platz gibt, sähe so ein Ranking folgendermaßen aus:
Ranking2 = [2, 4, 1, 6, 2, 5, 7]
Schreibe eine Methode/Funktion, die sowohl das 1. als auch das 2. Ranking ausgibt.
Viel Spaß
Jetzt gilt es herauszufinden, wer die meisten und wer die wenigsten Punkte in der Liste hat, um daraus ein sogenanntes Ranking zu erstellen.
Punkteliste = [14, 11, 19, 7, 14, 8, 5]
Ranking1 = [2, 3, 1, 5, 2, 4, 6]
Da es bei Sportveranstaltungen bei Vergabe von zwei 2. Plätzen oft keinen 3. Platz gibt, sähe so ein Ranking folgendermaßen aus:
Ranking2 = [2, 4, 1, 6, 2, 5, 7]
Schreibe eine Methode/Funktion, die sowohl das 1. als auch das 2. Ranking ausgibt.
Viel Spaß
Lösungen:

def get_unique(results: list): unique = [] for i in results: if unique.count(i) == 0: unique.append(i) return unique def get_ranking(results, r_list): ranking = [] for i in results: rank: int = 0 for j in r_list: if j > i: rank += 1 ranking.append(rank + 1) return ranking def test_291(results): print("Punkteliste: ", results) print("Ranking 1 : ", get_ranking(results, get_unique(results))) print("Ranking 2 : ", get_ranking(results, results)) if __name__ == '__main__': Punkteliste = [14, 11, 19, 7, 14, 8, 5] test_291(Punkteliste)

from copy import deepcopy data = [14, 11, 19, 7, 14, 8, 5] def ranking_1(data): data_backup = deepcopy(data) ranking = {} solution = [] data = sorted(set(data), reverse=True) for rank, points in enumerate(data): ranking[points] = rank + 1 for element in data_backup: solution.append(ranking[element])# return solution def ranking_2(data): data_backup = deepcopy(data) ranking = {} solution = [] data = sorted(data, reverse=True) for rank, points in enumerate(data): if not points in ranking.keys(): ranking[points] = rank + 1 for element in data_backup: solution.append(ranking[element])# return solution print(f'Punkteliste = {data}') print(f'Ranking1 = {ranking_1(data)}') print(f'Ranking2 = {ranking_2(data)}')