Как просто прочитать входные данные из стандартного ввода, разделенные пробелами или пробелами - PullRequest
2 голосов
/ 12 августа 2010

Здравствуйте, я пытаюсь выучить Python, В C ++ для чтения в строку из стандартного ввода я просто делаю

string str;
while (cin>>str)
    do_something(str)

но в питоне я должен использовать

line = raw_input()

тогда

x = line.split()

тогда я должен пройтись по списку x, чтобы получить доступ к каждой строке do_something(str)

это похоже на большой код, чтобы получить каждую строку, разделенную пробелами или пробелами поэтому мой вопрос, есть ли более простой способ?

Ответы [ 3 ]

6 голосов
/ 12 августа 2010

В Python нет особого случая такой специфической формы ввода для вас, но, конечно, просто создать небольшой генератор для него:

def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w

, а затем в коде приложения выцикл с оператором for (обычно это лучший способ зацикливаться на уровне кода приложения):

for w in fromcin():
  dosomething(w)
0 голосов
/ 12 августа 2010
map(do_something, line.split())
0 голосов
/ 12 августа 2010

На самом деле «более простого» способа не существует, поскольку в Python нет встроенных отформатированных строковых функций, как в C ++ для iostream.

Тем не менее, вы можете сократить код, комбинируяоперации:

for str in raw_input().split():
   do_something(str)
...