Python :: Aufgabe #240 :: Lösung #2
2 Lösungen

#240
Arrays-zweidimensional Noten Notenberechnung
Fortgeschrittener - Python
von sinanoz05
- 29.01.2020 um 11:28 Uhr
In einer Klasse werden in einem Schulhalbjahr in 6 Fächern bis zu 5 Klassen arbeiten geschrieben. Es ist ein Programm zu entwickeln, mit dem ein Schüler seine je Fach erzielten Noten eingeben kann. Bei nicht geschriebenen Arbeiten wird als Note die Null gespeichert. Der Rechner soll er mitteln,wie vieleArbeitender Schüler geschriebenhat. Ferner sollder Rechner den Noten durchschnitt proFachberechnen. Nachjeder Eingabe erscheint folgender Bildschirm(im Anhang):
Hinweise zur Realisierung: im Hauptprogramm werden folgende Funktionen aufgerufen: eingabe() unduebersicht() eingabe(): Eingabeeiner Note Übergabeparameter: keine Rückgabe wert: n: zweidimensionales Feld vom Typ Ganzzahl übersicht(): Ausgabeder Notenübersicht Übergabeparameter: n:zweidimensionales Feld vom Typ Ganzzahl Rückgabewert:kein
Achtung! wenninmain:
1) Feld-def.:noten[6,5]
2) Feld an Methode übergeben noten=eingabe(noten)
3) in Methode neues Feld n[3,3] bei return (n) wird in der Aufrufzeile von main das Feld noten bzw.die Referenz auf das Feld überschrieben!!! Referenz auf noten wird durch die Referenz auf das neue Feld n überschrieben!
Hinweise zur Realisierung: im Hauptprogramm werden folgende Funktionen aufgerufen: eingabe() unduebersicht() eingabe(): Eingabeeiner Note Übergabeparameter: keine Rückgabe wert: n: zweidimensionales Feld vom Typ Ganzzahl übersicht(): Ausgabeder Notenübersicht Übergabeparameter: n:zweidimensionales Feld vom Typ Ganzzahl Rückgabewert:kein
Achtung! wenninmain:
1) Feld-def.:noten[6,5]
2) Feld an Methode übergeben noten=eingabe(noten)
3) in Methode neues Feld n[3,3] bei return (n) wird in der Aufrufzeile von main das Feld noten bzw.die Referenz auf das Feld überschrieben!!! Referenz auf noten wird durch die Referenz auf das neue Feld n überschrieben!
#2

von kaschperl (400 Punkte)
- 25.02.2020 um 00:28 Uhr

import numpy as np import pandas as pd class Notenberechnung: def __init__(self, anzahl_faecher, anzahl_arbeiten): self.anzahl_faecher = anzahl_faecher self.anzahl_arbeiten = anzahl_arbeiten self.MAX_NOTE = 6 # Notenspiegel aufbauen self.nspiegel = pd.DataFrame(index=["Fach " + str(x+1) for x in range(self.anzahl_faecher)], columns=[str(x+1) for x in range(self.anzahl_arbeiten)]) self.nspiegel['Anzahl'] = [0 * x for x in range(self.anzahl_faecher)] self.nspiegel['Durchschnitt'] = [0 * x for x in range(self.anzahl_faecher)] self.nspiegel.fillna(0, inplace=True) self.menu() def menu(self): while True: print('\n########## Menu ###########') print('1 - Note hinzufügen') print('2 - Notenspiegel anzeigen') print('0 - Beenden') menu = input('### Ihre Wahl: ') if menu == '1': self.add_Note() elif menu == '2': self.print_Notenspiegel() elif menu == '0': break else: print('ungültige Eingabe!') input('### weiter mit Enter') def add_Note(self): fach = int(input('Fach-Nummer: ')) arbeit_nummer = int(input('Arbeits-Nummer: ')) note = int(input(f'Arbeit von KA {arbeit_nummer}: ')) self.nspiegel.iat[fach-1,arbeit_nummer-1] = note self.nspiegel.replace(0, np.NaN, inplace=True) self.nspiegel['Anzahl'] = self.nspiegel.iloc[0:6,0:5].count(axis='columns') self.nspiegel['Durchschnitt'] = self.nspiegel.iloc[0:6,0:5].mean(axis='columns') self.nspiegel.fillna(0, inplace=True) self.print_Notenspiegel() def print_Notenspiegel(self): print('\n### Notenspiegel ###') print(self.nspiegel) if __name__ == "__main__": Notenberechnung(6,5)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1