Re: Python Grundkurs
Verfasst: Dienstag 7. Juni 2022, 17:41
@Ellen: Die Funktion `stadt_mit()` erfüllt nicht die Anforderung *drei* Argumente zu bekommen. Anzahl und Reihenfolge sind in der Aufgabe vorgegeben.
Ähnliches Problem bei `startet_mit_buchstabe()`. Die Funktion ist zwar nicht zwingend vorgegeben gewesen, aber sie müsste schon alles als Argument(e) bekommen um ihre Aufgabe zu erfüllen. Man darf nicht einfach Namen von ausserhalb verwenden, nur weil die zufällig dort definiert sind. Ausser Konstanten, die man daran erkennnt, dass sie KOMPLETT_GROSS geschrieben werden.
Man muss nicht jedes Zwischenergebnis an einen Namen binden. Insbesondere nicht direkt vor einem ``return`` an einen so nichtsagenden Namen wie `ergebnis`. Das dort ein Ergebnis zurückgegeben wird, sieht man schon daran, dass da ein ``return`` mit einem Wert steht.
Die Funktion hat auch ein kleines Problem mit leeren Zeichenketten:
Beim letzten Fall hätten die meisten wohl ein `False` erwartet und keine Ausnahme. Den Test würde man anders machen. Schau Dir mal an was Zeichenketten so an Methoden bieten. Da gibt es was passende(re)s.
Zur Frage: Wie stellst Du denn fest wie viele Zeichen eine Zeichenkette enthält, also wie lang sie ist? Wie würde man denn mathematisch die Bedingung maximal n Zeichen ausdrücken? Diesen Vergleich kann man in Python auch so ausdrücken. Und dann mit der ersten Bedingung logisch ”und”-Verknüpfen. Städte werden in die Ergebnisliste übernommen wenn sie die erste *und* die zweite Bedingung erfüllen.
Ähnliches Problem bei `startet_mit_buchstabe()`. Die Funktion ist zwar nicht zwingend vorgegeben gewesen, aber sie müsste schon alles als Argument(e) bekommen um ihre Aufgabe zu erfüllen. Man darf nicht einfach Namen von ausserhalb verwenden, nur weil die zufällig dort definiert sind. Ausser Konstanten, die man daran erkennnt, dass sie KOMPLETT_GROSS geschrieben werden.
Man muss nicht jedes Zwischenergebnis an einen Namen binden. Insbesondere nicht direkt vor einem ``return`` an einen so nichtsagenden Namen wie `ergebnis`. Das dort ein Ergebnis zurückgegeben wird, sieht man schon daran, dass da ein ``return`` mit einem Wert steht.
Die Funktion hat auch ein kleines Problem mit leeren Zeichenketten:
Code: Alles auswählen
In [38]: def startet_mit_buchstabe(stadt, buchstabe):
...: return stadt[0] == buchstabe
...:
In [39]: startet_mit_buchstabe("Berlin", "B")
Out[39]: True
In [40]: startet_mit_buchstabe("Berlin", "X")
Out[40]: False
In [41]: startet_mit_buchstabe("", "X")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-41-f3f83a9a3c94> in <module>
----> 1 startet_mit_buchstabe("", "X")
<ipython-input-38-98fbddde96a1> in startet_mit_buchstabe(stadt, buchstabe)
1 def startet_mit_buchstabe(stadt, buchstabe):
----> 2 return stadt[0] == buchstabe
3
IndexError: string index out of range
Zur Frage: Wie stellst Du denn fest wie viele Zeichen eine Zeichenkette enthält, also wie lang sie ist? Wie würde man denn mathematisch die Bedingung maximal n Zeichen ausdrücken? Diesen Vergleich kann man in Python auch so ausdrücken. Und dann mit der ersten Bedingung logisch ”und”-Verknüpfen. Städte werden in die Ergebnisliste übernommen wenn sie die erste *und* die zweite Bedingung erfüllen.