Seite 1 von 1
Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 13:12
von Pitwheazle
Meine Schülerinnen und Schüler müssen Durchschnittswerte berechnen.
Also etwa so:
Code: Alles auswählen
noten = []
for note in range(10):
note = random.randint(1,4)
noten.append(str(note))
text = "Otto hat im Zeugnis folgende Noten:<br>{}<br>Berechne die Durchschnittsnote!".format(", ".join(noten))
Das funktioniert soweit prima. Ich hätte jetzt aber gerne das letzte Komma durch ein "und eine" ersetzt - wie ich python kenne, kann man das sicher auch elegant lösen ohne die Liste aufzudröseln - ich habe aber keine Möglichkeit gefunden, das letzte Komma durch " und eine" zu ersetzen.
Re: Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 14:51
von DeaD_EyE
So z.B.:
Code: Alles auswählen
import random
def noten(name, anzahl):
noten = list(map(str, random.choices(range(1,7), k=anzahl)))
fmt = f"{name} hat im Zeugnis folgende {'Note' if anzahl < 2 else 'Noten'}"
end = "<br>Berechne die Durchschnittsnote!"
if anzahl == 1:
return f"{fmt}:<br>{noten[0]}{end}"
elif anzahl == 2:
return f"{fmt}:<br>{noten[0]} und {noten[1]}{end}"
else:
return f"{fmt}:<br>{', '.join(noten[:-1])} und {noten[1]}{end}"
print(noten("Alfred", 1))
print(noten("Alex", 2))
print(noten("Anton", 3))
print(noten("Daniel", 10))
Re: Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 15:55
von Pitwheazle
Danke dafür, das [:-1] war das was ich gesucht habe - aber blöderweise habe ich die eckige Klammer vergessen
.
Damit man die Aufgaben im Kopf rechnen kann, nehme ich immer 10 Werte. (Einige SuS benutzen dafür trotzdem einen Taschenrechner).
Anmerkung: Aus Verzweiflung hatte ich es jetzt doch tatsächlich mit:
probiert
- geht auch.
Re: Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 16:31
von Dennis89
Hallo,
wobei nach dem "und" nicht auf Index 1 zugegriffen werden sollte, den dieser lief ja schon durch die Schleife. Die letzte Note fehlt noch, das wäre -1. Sicherlich nur ein Typo, wollts trotzdem erwähnen, falls sich jemand wundert.
Grüße
Dennis
Re: Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 18:59
von snafu
Man könnte auch Tuple Unpacking benutzen:
Code: Alles auswählen
import random
def gib_noten(anzahl=10):
*noten, letzte_note = random.choices(range(1, 7), k=anzahl)
if not noten:
return f"Eine {letzte_note}"
return f"{', '.join(map(str, noten))} und eine {letzte_note}"
def main():
print(gib_noten())
for anzahl in range(1, 4):
print(gib_noten(anzahl))
if __name__ == "__main__":
main()
Re: Liste erstellen mit "und"
Verfasst: Montag 22. April 2024, 19:08
von snafu
DeaD_EyE hat geschrieben: ↑Montag 22. April 2024, 14:51
So z.B.:
Die zweite Bedingung ist unnötig, denn join() mit nur einem String gibt einfach den String zurück.
Re: Liste erstellen mit "und"
Verfasst: Dienstag 23. April 2024, 11:55
von DeaD_EyE
snafu hat geschrieben: ↑Montag 22. April 2024, 19:08
DeaD_EyE hat geschrieben: ↑Montag 22. April 2024, 14:51
So z.B.:
Die zweite Bedingung ist unnötig, denn join() mit nur einem String gibt einfach den String zurück.
man lernt nie aus.