Listen in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

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!
Zuletzt geändert von Anonymous am Mittwoch 17. Mai 2017, 20:11, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

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.
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

also wort in woerter
dann import sys?


kann ich print auch benutzen? wenn ja wie?
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.
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

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?
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Wie ist denn ein Substantiv in Deiner Liste definiert?
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

muss ich die Substantive noch einzeln definieren, sie sind wie oben gesehen in der Liste drin inclusive der kleingeschriebenen Wörter
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Nein, Du sollst mit eigenen Worten so genau wie möglich beschreiben, was Substantive in Deiner Liste mit Wörtern ausmacht. :wink:
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

na das sie mit einem Grossbuchstaben anfangen.
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

jetzt bin ich immer noch nicht weiter gekommen ;(
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

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.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

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
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

so richtig schlau werde ich daraus jetzt nicht. muss ich das 'A' irgendwo mit einbauen in die if Verzweigung?
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

eine if Verzweigung muss eingebaut werden aber wie baue ich dir dort ein
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

ich breche ab, ich komme da nicht weiter.
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.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

wo baue ich das prüfen denn ein? in der for schleife, richtig?? mit vergleichsoperatoren? UND DANN IF ODER ELSE?
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

kann ich in die schleife einbauen: prüfe woerter nach Substantiven?
dt_fahrer
User
Beiträge: 39
Registriert: Montag 27. Februar 2017, 08:59

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???
Antworten