Modul sys

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.
Antworten
p_a
User
Beiträge: 3
Registriert: Samstag 23. April 2016, 10:46

Hallo zusammen,

ich komme mit dem "sys" Modul nicht zurecht. Das Problem ist eigentlich nur die Ausgabe. Mein Ziel ist es jeden Buchstaben einer mehrzeiligen Eingabe in eine Liste zupacken. Mit dieser Liste möchte ich dann ein bisschen rumspielen, beispielsweise in mehrere Listen aufteilen oder Buchstaben zählen, was ich hin bekomme. Jetzt möchte ich, dass mir mein Programm einfach die Liste aufgibt und die Länge der Liste.

Code: Alles auswählen

import sys

L = []

eingabe = sys.stdin

for line in eingabe:
    for i in line:
        L.append(i)
wie lautet der Befehl und mir die Liste auszugeben und die Länge?
Danke
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@p_a: die Länge einer Liste hat nichts mit dem sys-Modul zu tun. Zur Ausgabe gibt es print, für die Länge len.
p_a
User
Beiträge: 3
Registriert: Samstag 23. April 2016, 10:46

Wenn ich aber noch am Ende

Code: Alles auswählen

print(L)
print(len(L))
anhänge passiert nix. Genau das soll das Programm ja ausgeben. In der "for" Schleife kann ich mir die Liste ausgeben lassen, danach aber irgendwie nicht mehr.

Code: Alles auswählen

import sys

L = []

eingabe = sys.stdin

for line in eingabe:
    for i in line:
        L.append(i)
    print(L)
    print(len(L))
Jetzt spuckt es mir ja, pro Zeile der Eingabe, die sich aufbauende Liste aus.

Code: Alles auswählen

import sys

L = []

eingabe = sys.stdin

for line in eingabe:
    for i in line:
        L.append(i)
print(L)
print(len(L))
So hätte ich es aber gerne, aber ich erhalte komischerweise keine Ausgabe.
BlackJack

@p_a: Wann denkst Du denn das die ``for``-Schleife verlassen werden sollte? Denn nur dann wird ja Code ausgeführt der hinter der Schleife steht.

`i` und `L` sind hier übrigens keine guten Namen. Die sagen nichts über den Wert aus. `i` ist zudem noch irreführend weil die meisten Programmierer bei einer Laufvariablen mit diesem Namen erwarten das es sich um ganze Zahlen handelt.
p_a
User
Beiträge: 3
Registriert: Samstag 23. April 2016, 10:46

Ok, habe mein wirkliches Problem verstanden. Dachte "sys.stdin" verhält sich wie "input()". Mein Programm wartet also immer auf die nächste Eingabe, um diese in die Liste mit aufzunehmen.

Danke
BlackJack

@p_a: Es ist egal ob Du eine Schleife über die Zeilen von `sys.stdin` schreibst, oder eine Schleife in der immer wieder `input()` aufgerufen wird, ist egal. `sys.stdin` verhält sich wie eine Datei. Wenn Du nur eine Zeile davon lesen willst, dann musst Du die `next()`-Funktion verwenden.
Antworten