Seite 1 von 1

Modul sys

Verfasst: Samstag 23. April 2016, 11:10
von p_a
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

Re: Modul sys

Verfasst: Samstag 23. April 2016, 11:43
von Sirius3
@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.

Re: Modul sys

Verfasst: Samstag 23. April 2016, 13:06
von p_a
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.

Re: Modul sys

Verfasst: Samstag 23. April 2016, 13:17
von 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.

Re: Modul sys

Verfasst: Samstag 23. April 2016, 14:15
von p_a
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

Re: Modul sys

Verfasst: Samstag 23. April 2016, 14:38
von 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.