Listen in Python
Code: Alles auswählen
woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
for i,wort in enumerate (woerter):
if woerter== 'A'.isupper():
print(i,wort)
else:
woerter!='a'.isupper()
print(i,wort)
Noch nicht so ganz...
Du willst prüfen, ob der erste Buchstabe des Wortes groß oder klein geschrieben ist und nicht 'A' bzw. 'a'.
Wann willst du denn etwas ausgeben?
Schau dir wirklich mal an, wie eine IF-Bedingung funktioniert und aufgebaut ist! Zum Beispiel im Python-Kurs.eu.
Du willst prüfen, ob der erste Buchstabe des Wortes groß oder klein geschrieben ist und nicht 'A' bzw. 'a'.
Wann willst du denn etwas ausgeben?
Schau dir wirklich mal an, wie eine IF-Bedingung funktioniert und aufgebaut ist! Zum Beispiel im Python-Kurs.eu.
Der Code ist schon wieder geraten. Wie soll die Liste woerter sinnvoll mit dem Rückgabewert von isupper() verglichen werden?
Grundsätzlich korrekt ist die Schleife
Jetzt willst du die Ausgabe (print) aber nur vornehmen wenn (if) etwas Bestimmtes zutrifft. Im anderen Fall (else) möchtest du nichts tun, also brauchst du den Fall gar nicht behandeln.
Was ist jetzt das, was du prüfen möchtest? Du möchtest wissen ob der erste Buchstabe des aktuellen Wortes (word) ein Großbuchstabe ist. Du weißt wie man einen String daraufhin überprüft ob er aus Großbuchstaben besteht - zumindest hast du die entsprechende Methode in deinem Code verwendet. Jetzt darfst du die Prüfung nur auf den ersten Buchstaben des Wortes anwenden. Solltest du nicht wissen, wie du einen einzelnen Buchstaben bekommst, dann schau dir noch mal das Kapitel über Strings im Tutorial an.
Grundsätzlich korrekt ist die Schleife
Code: Alles auswählen
for i, wort in enumerate(woerter):
print(i, wort)
Was ist jetzt das, was du prüfen möchtest? Du möchtest wissen ob der erste Buchstabe des aktuellen Wortes (word) ein Großbuchstabe ist. Du weißt wie man einen String daraufhin überprüft ob er aus Großbuchstaben besteht - zumindest hast du die entsprechende Methode in deinem Code verwendet. Jetzt darfst du die Prüfung nur auf den ersten Buchstaben des Wortes anwenden. Solltest du nicht wissen, wie du einen einzelnen Buchstaben bekommst, dann schau dir noch mal das Kapitel über Strings im Tutorial an.
@dt_fahrer: Das ist doch schon wieder komplett geraten. Oder kannst Du erklären wie Du auf diese ``if``-Bedingung gekommen bist? Was hast Du Dir dabei gedacht? Beschreibe doch mal in Worten was dort geprüft wird. Wie hast Du überprüft ob diese Gedankengänge mit dem tatsächlien Verhalten des Programms übereinstimmen, beziehungsweise ab welchem Punkt/Teilausdruck das Programm nicht das macht was Du gedacht hast was es macht?
Hast Du wenigstens ermittelt welches `print()` für welche Ausgabe verantwortlich ist? Welcher der beiden `print()`-Aufrufe gibt welche Zeile der Ausgabe aus?
Was denkst Du was in Zeile 6 passiert und welchen Einfluss hat das auf den Programmablauf?
Hast Du wenigstens ermittelt welches `print()` für welche Ausgabe verantwortlich ist? Welcher der beiden `print()`-Aufrufe gibt welche Zeile der Ausgabe aus?
Was denkst Du was in Zeile 6 passiert und welchen Einfluss hat das auf den Programmablauf?
Nein. Du möchtest aus der Liste von Wörtern jedes einzelne Wort darauf prüfen, ob es die Bedingung eines Substantivs erfüllt.dt_fahrer hat geschrieben:stimmt, ich möchte ja die ganze liste auf substantive untersuchen also muss 'woerter' rein anstatt 'A'
Wenn Du programmieren möchtest, musst Du lernen, so zu denken. Es gibt Untersuchungen darüber, das dies nicht jedem gegeben ist. Das ist kein Manko und Künstler z.B. können darauf teils gut verzichten; für die Tätigkeit des Programmierens dagegen ist es essentiell.
Und, wie schon gesagt, bei Python brauchst Du nicht zu raten. Du kannst Deine Ideen direkt als code prüfen.
-
- User
- Beiträge: 168
- Registriert: Montag 9. Mai 2016, 09:14
- Wohnort: Berlin
Nimm dir mal ein Zettel und schreibe genau hin was du machen möchtest, auf Deutsch natürlich.
Das könnte beispielsweise so ähnlich aussehen:
Jetzt schreibe uns deine Überlegungen
(*1) LINK = http://python4kids.net/how2think/kap07.htm
(*2) LINK = http://www.python-kurs.eu/python3_bedin ... sungen.php
Das könnte beispielsweise so ähnlich aussehen:
Code: Alles auswählen
DEUTSCHER PSEUDO CODE
#Ich habe eine Liste mit vielen unterschiedlichen Wörtern (Substantive / Verben)
woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
# ich möchte etwas mit jedem Wort machen
for i, wort in enumerate(woerter):
# i ist also mein Index und wort enthällt entweder ein Substantiv oder Verb
# als aller erstes kommt also das Wort 'Aal' mit i = 0 heraus, das kann ich mir mit 'print(i, wort)' ausgeben
# wenn der erste Buchstabe groß geschrieben ist, handelt es sich um ein Substantiv.
# also speichere ich mir den ersten Buchstaben des Wortes in 'erster_buchstabe'
# aber wie bekomme ich den ersten Buchstaben des Wortes?
# ich google also etwas und finde dann diesen Link: (*1) der Link befindet sich am Ende
erster_buchstabe = ???
# durch isupper kann ich herausfinden, ob der erste Buchstabe groß oder klein ist, coole Sache!
ergebnis = erster_buchstabe.isupper()
# für Aal würde also true in ergebnis stehen und für das Wort arbeiten false
# jetzt kann ich doch mit einer if - else Funktion testen wie das Ergebnis ist, oder?
# wie geht das mit der If - else Funktion noch mal? (*2) der Link befindet sich am Ende
if ergebnis:
# wenn das Ergebnis wahr ist, handelt es sich um ein Substantiv, das möchte ich printen
# hier muss also mein Print Befehl hin
print ???
else:
# wenn das Ergebnis false ist, handelt es sich um ein Verb oder vielleicht Adjektiv, das möchte ich ignorieren.
pass
Jetzt schreibe uns deine Überlegungen
(*1) LINK = http://python4kids.net/how2think/kap07.htm
(*2) LINK = http://www.python-kurs.eu/python3_bedin ... sungen.php
Code: Alles auswählen
woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
for i in range(len(woerter)):
if woerter [i][0].isupper():
print(i,woerter[i])
Zuletzt geändert von Anonymous am Donnerstag 18. Mai 2017, 14:19, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
geht, ist aber nicht-idomatisches Python. Besonders über eine Sequenz, die "iterable" ist, mit `range()` zu iterieren, ist ein Anti-Pattern. Zumal wir schon mindestens 5x `enumerate` in den Raum geworfen haben...
Besser:
[codebox=pycon file=Unbenannt.txt]>>> woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
>>> for index, wort in enumerate(woerter):
... if wort[0].isupper():
... print(index, wort)
...
0 Aal
2 Berta
3 Lesung
>>>[/code]
geht, ist aber nicht-idomatisches Python. Besonders über eine Sequenz, die "iterable" ist, mit `range()` zu iterieren, ist ein Anti-Pattern. Zumal wir schon mindestens 5x `enumerate` in den Raum geworfen haben...
Besser:
[codebox=pycon file=Unbenannt.txt]>>> woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
>>> for index, wort in enumerate(woerter):
... if wort[0].isupper():
... print(index, wort)
...
0 Aal
2 Berta
3 Lesung
>>>[/code]
@dt_fahrer: Die Funktion wurde Dir hier *mehrfach* sogar mit Quelltext gezeigt. Liest Du nur Komplettlösungen?
Was sind denn bitte Befehlslisten bzw. Formelsammlungen über Python? In der Python-Dokumentation steht die Funktion beschrieben und im Tutorial in der Python-Dokumentation wird die Funktion auch behandelt. Und auch überall wo so etwas wie ``for i in range(len(sequence)):`` steht, sollte als nächstes stehen das man das besser mit `enumerate()` macht falls man den Index zusätzlich zum Element braucht.
Was sind denn bitte Befehlslisten bzw. Formelsammlungen über Python? In der Python-Dokumentation steht die Funktion beschrieben und im Tutorial in der Python-Dokumentation wird die Funktion auch behandelt. Und auch überall wo so etwas wie ``for i in range(len(sequence)):`` steht, sollte als nächstes stehen das man das besser mit `enumerate()` macht falls man den Index zusätzlich zum Element braucht.