Python :: Aufgabe #338

3 Lösungen Lösungen öffentlich

Turmspringen/Wasserspringen (Punktewertung)

Anfänger - Python von JKooP - 02.04.2021 um 09:28 Uhr
Bei internationalen Wettkämpfen bewerten in Einzelwettbewerben sieben Wettkampfrichter die Sprünge.
Jeder vergibt pro Sprung 0 bis 10 Punkte, mit Schritten von halben Punkten.
Die zwei höchsten und niedrigsten Wertungen werden gestrichen.
Die verbleibenden drei Wertungen werden addiert und das Ergebnis mit dem Schwierigkeitsgrad multipliziert.
Das Endresultat entspricht der erzielten Punktzahl des Springers.

Beispiel 1:
Schwierigkeitsgrad: 2,1
Punkte: 7,5 | 7,5 | 7,0 | 8,0 | 8,0 | 7,5 | 8,5
Gestrichen: 7,5 | 7,5 | 7,0 | 8,0 | 8,0 | 7,5 | 8,5
Wertung: 7,5 + 7,5 + 8,0 = 23 * 2,1 = 48,3

Beispiel 2:
Schwierigkeitsgrad: 1,6
Punkte: 7,5 | 7,5 | 7,5 | 7,5 | 7,5 | 7,5 | 7,5
Gestrichen: 7,5 | 7,5 | 7,5 | 7,5 | 7,5 | 7,5 | 7,5
Wertung: 7,5 + 7,5 + 7,5 = 22,5 * 1,6 = 36

Erstelle eine Methode/Funktion, mit der die obige Aufgabenstellung gelöst werden kann.

Viel Spaß

Lösungen:

vote_ok
von bdoc137 (240 Punkte) - 05.04.2021 um 15:06 Uhr
Quellcode ausblenden Python-Code

import random

a=float(input('Schwierigkeitsgrad auswählen: '))

wertung=[]

for i in range(1,8):
    
    wertung.append((round(random.uniform(0,10)*2)/2))
 
wertung=sorted(wertung)

del wertung[0:2]   
del wertung[-1:-3:-1]      
print(wertung)
print('%2.2f' % (sum(wertung)*a))

vote_ok
von eisheiliger (1980 Punkte) - 05.04.2021 um 18:05 Uhr
Quellcode ausblenden Python-Code

"""
#338: Turmspringen/Wasserspringen (Punktewertung)
Die zwei höchsten und niedrigsten Wertungen werden gestrichen. Die verbleibenden drei Wertungen
werden addiert und das Ergebnis mit dem Schwierigkeitsgrad multipliziert.
"""


def punktewert(punkte, diff):
    punkte = sorted(punkte)
    summe = 0
    wert = []

    for i in range(2, len(punkte) - 2):
        summe += punkte[i]
        wert.append(punkte[i])

    print("gewertet  ", wert)
    print("gestrichen", [punkte[0], punkte[1], punkte[len(punkte) - 2], punkte[len(punkte) - 1]])
    print("Wertung   ", "%0.1f" % round((summe * diff), 1), "\n")


def main():
    punktewert([7.5, 7.5, 7.0, 8.0, 8.0, 7.5, 8.5], 2.1)
    punktewert([7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5], 1.6)


if __name__ == '__main__':
    main()


vote_ok
von AlexGroeg (1240 Punkte) - 06.04.2021 um 13:25 Uhr
Quellcode ausblenden Python-Code

grad = 2.1
punkte = [7.5, 7.5, 7.0, 8.0, 8.0, 7.5, 8.5]

def wertung(punkte,grad):
    for i in range(2):
        punkte.pop(punkte.index(min(punkte)))
        punkte.pop(punkte.index(max(punkte)))
    
    return sum(punkte) *grad

print('Das Enresultat ist {:.1f} Punkte.'.format(wertung(punkte,grad)))