Seite 1 von 3

Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 19:52
von dt_fahrer
Benötige Hilfe bei einer Aufgabe mit Python. Es geht um Listen!

Hier das Beispiel:

Es soll ein Programm geschrieben werden das alle Substantive der Liste und den dazugehörigen Index angibt.

Code: Alles auswählen

worter=['Aal','arbeiten','Berta','Lesung','fröhlich']

Ausgabe wäre:

0 Aal
2 Berta
3 Lesung



---------------------------------

Hier meine Idee:

Code: Alles auswählen

woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']
for i in range (len(woerter)):
    print (i,woerter[i])
Ausgabe:
0 Aal
1 arbeiten
2 Berta
3 Lesung
4 fröhlich

Dann kommen leider alle untereinander weg raus.

Wäre sehr dankbar für eine Lösung!

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:09
von Alfons Mittelmeyer
dt_fahrer hat geschrieben: Dann kommen leider alle untereinander weg raus.
Wäre sehr dankbar für eine Lösung!
Also len brauchst Du nicht. Da nimmst Du:

Code: Alles auswählen

for wort in woerter:
Und dann machst Du am Anfang:

import sys

Und kannst dann statt print dieses benützen:

sys.stdout.write(wort+" ")

Ach so, wenn Du den Index mit ausgeben willst, dann lässt Du es mit len wie bisher.

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:14
von dt_fahrer
also wort in woerter
dann import sys?


kann ich print auch benutzen? wenn ja wie?

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:17
von BlackJack
@Alfons Mittelmeyer: Genau, nimm ihm den Index weg den er braucht ohne zu sagen wie man ihn besser bekommt als mit `range()` und `len()` und dann noch das hier völlig sinnfreie `sys.stdout`. :roll:

@dt_fahrer: Ignorier den Beitrag von Alfons, Du brauchst `sys` nicht. Nicht einmal wenn er Dich *nicht* falsch verstanden hätte, denn auch bei `print()` könnte man das Zeichen für eine neue Zeile unterdrücken.

Index *und* Element bekommt man mit der `enumerate()`-Funktion und wenn die Substantive nicht ausgegeben werden sollen, dann musst Du beispielsweise mit ``if`` und einer passenden Bedingung dafür sorgen das die Ausgabe nur stattfindet wenn es sich bei dem Wort um ein Substantiv handelt. Dazu könnte man zum Beispiel prüfen ob der erste Buchstabe gross geschrieben ist. Schau Dir mal die Methoden auf Zeichenketten an.

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:18
von dt_fahrer
oh mensch jetzt bin ich völlig verwirrt. also muss ich unter meine for schleife eine if Verzweigung eingeben? das er mir nur die substantive ausgibt, aber wie mache ich das?

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:28
von bwbg
Wie ist denn ein Substantiv in Deiner Liste definiert?

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:31
von dt_fahrer
muss ich die Substantive noch einzeln definieren, sie sind wie oben gesehen in der Liste drin inclusive der kleingeschriebenen Wörter

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:32
von bwbg
Nein, Du sollst mit eigenen Worten so genau wie möglich beschreiben, was Substantive in Deiner Liste mit Wörtern ausmacht. :wink:

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:35
von dt_fahrer
na das sie mit einem Grossbuchstaben anfangen.

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:36
von dt_fahrer
jetzt bin ich immer noch nicht weiter gekommen ;(

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:40
von bwbg
Ich arbeite die Arbeitsanweisung von BlackJack einmal für Dich ab:

[codebox=python file=Unbenannt.txt]Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir('')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '_
_eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs
__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__'
, '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__'
, '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'e
ncode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isal
num', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstr
ip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartitio
n', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase'
, 'title', 'translate', 'upper', 'zfill']
>>> 'A'.isupper()
True
>>> 'a'.isupper()
False
>>>[/code]

Und jetzt bist Du am Zug.

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:48
von dt_fahrer
was ist der der Befehl 'dir'? sagtmir gar nichts.

du hast auf das 'A' geprüft und auf das kleine 'a'

'A' IST WAHR
'a' ist falsch

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:49
von dt_fahrer
so richtig schlau werde ich daraus jetzt nicht. muss ich das 'A' irgendwo mit einbauen in die if Verzweigung?

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:53
von dt_fahrer
eine if Verzweigung muss eingebaut werden aber wie baue ich dir dort ein

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 20:59
von dt_fahrer
ich breche ab, ich komme da nicht weiter.

Re: Listen in Python

Verfasst: Mittwoch 17. Mai 2017, 22:33
von BlackJack
@dt_fahrer: Du musst einfach nur Schritt für Schritt das vorgehen was Du auch selbst, manuell machen würdest, in Code ausdrücken. *Du* kannst Die Aufgabe doch lösen. Jetzt musst Du sie formal für den Rechner formulieren.

Wieso das 'A' irgendwo einbauen? Du willst doch nicht wissen ob 'A' ein Grossbuchstabe ist, ich denke mal das weisst Du auch so. Du möchtest wissen ob der erste Buchstabe von jedem Wort ein Grossbuchstabe ist. Und falls ja, willst Du das Wort ausgeben lassen.

Edit: Das Problem für uns ist jetzt, dass Du alle Bausteine die Du zum lösen der Aufgabe brauchst, kennst. Dazwischen und der Lösung ist jetzt kaum bis gar keine Luft mehr Dir zu helfen, ohne eine Lösung zu zeigen. Was Dir wiederum nicht hilft das *selbst* zu lösen.

Re: Listen in Python

Verfasst: Donnerstag 18. Mai 2017, 06:45
von noisefloor
Hallo,

noch ein bisschen konkreter:

* Python hat die Builtin-Funktion `enumerate`. Damit kannst du über eine Liste iterieren und bekommst zusätzlich einen Zähler dazu.
* Beim Iterieren über die Liste bekommst du pro Iterationsschritt einen String zurück. Daraus extrahierst den ersten Buchstaben (Tipp: Unter Python kann man auf einzelne Buchstaben per Index zugreifen).
* Diesen ersten Buchstaben prüfst du auf Groß- / Kleinschreibung, siehe oben.
* Wenn der Buchstabe groß geschrieben ist -> Ausgabe per `print`; wenn nein -> nächster Iterationsschritt

Falls du es wider erwarten nicht hin bekommst -> poste hier den Code, den du hast, dann haben wir wenigsten eine Diskussionsgrundlage :-)

Gruß, noisefloor

Re: Listen in Python

Verfasst: Donnerstag 18. Mai 2017, 07:03
von dt_fahrer
wo baue ich das prüfen denn ein? in der for schleife, richtig?? mit vergleichsoperatoren? UND DANN IF ODER ELSE?

Re: Listen in Python

Verfasst: Donnerstag 18. Mai 2017, 07:09
von dt_fahrer
kann ich in die schleife einbauen: prüfe woerter nach Substantiven?

Re: Listen in Python

Verfasst: Donnerstag 18. Mai 2017, 07:20
von dt_fahrer
woerter=['Aal','arbeiten','Berta','Lesung','fröhlich']

for i,v in enumerate (['Aal','Berta','Lesung']):
print (i,v)


so hab ich es jetzt, aber geht sicher auch einfacher???