Próbuję uzyskać wiele nazw oddzielonych przez znaki nowej linii od konsoli i umieścić je w zmiennej. Załóżmy, że chcę uzyskać dane wejściowe z terminala na zawsze (dodam kod, aby później przerwać pętlę). Wiem, jak to zrobić z pętlą while i rekurencją, ale chciałbym móc to zrobić z pętlą for.Python iteruje po linii standardowej wiersz po linii używając input()
W poniższym przykładzie, gdy dostaję "peter"
jako wejścia z terminala dostaję każdą literę, a nie całej linii naraz:
for name in input():
print(name)
Teraz, jeśli mogę użyć sys.stdin
zmienna name
staje "peter\n"
:
for name in sys.stdin:
print(name)
Czy istnieje łatwy sposób uzyskać input()
dać "name"
całą linię zamiast pojedynczych znaków? Lub po prostu z natury przy użyciu for in
zamierzam być iteracyjne przez znaki w danych wejściowych? Czy istnieją jakieś nieodłączne ryzyko/problemy z uzyskaniem danych wejściowych w ten sposób? Czy istnieje "standardowy" sposób uzyskania danych wejściowych w takiej sytuacji?
Używam Python 3.5.1 na Ubuntu 15.10.
'input()' zwraca ciąg znaków, który jest iterowalny, dlatego też przy próbie iteracji nad nim dostajesz po kolei każdą znak. –
OK, co ma sens. input() zwraca ciąg znaków. Czy też sys.stdin zwraca bufor, który jest iterowany linia po linii? – PeterH
Ponieważ sys.stdin zwraca plik podobny do obiektu, który, po iteracji przez, będzie zawierał każdą pojedynczą linię danych wejściowych. –