В Python, как вы берете токенизированный ввод, такой как с C ++? - PullRequest
2 голосов
/ 18 сентября 2008

В C ++ , я могу получить такой ввод:

cin >> a >> b >> c;

И a может быть int, b может быть float, а c может быть любым ... Как сделать то же самое в python ?

input() и raw_input(), то, как я их использую, похоже, не дает мне желаемых результатов.

Ответы [ 3 ]

4 голосов
/ 18 сентября 2008

Обычно вы не должны использовать input() в рабочем коде. Если вы хотите int, а затем float, попробуйте это:

>>> line = raw_input().split()
>>> a = int(line[0])
>>> b = float(line[1])
>>> c = " ".join(line[2:])

Все зависит от того, что именно вы пытаетесь достичь, но помните, что читаемость имеет значение. Неясные однострочники могут показаться крутыми, но, учитывая ремонтопригодность, попробуйте выбрать что-нибудь разумное

(P.S .: Не забудьте проверить наличие ошибок с try: ... except (ValueError, IndexError):)

3 голосов
/ 18 сентября 2008

Поскольку C ++ Cin читает из sys.stdin, вы часто будете делать что-то похожее на следующее.

import sys
tokens= sys.stdin.read().split()
try:
   a= int(token[0])
   b= float(token[1])
except ValueError, e:
   print e # handle the invalid input
0 голосов
/ 18 сентября 2008

В зависимости от того, что вы делаете, может пригодиться что-то вроде модуля getopt , но только в определенных ситуациях, и я не уверен, применимо ли это в вашей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...