在Python中如何获取类似C++的标记化输入?

2 投票
3 回答
2069 浏览
提问于 2025-04-11 09:16

C++ 中,我可以这样输入数据:

cin >> a >> b >> c;

而且 a 可以是 int(整数),b 可以是 float(浮点数),c 可以是任何类型的东西……我该如何在 python 中做到这一点呢?

我用的 input()raw_input() 似乎没有给我想要的结果。

3 个回答

0

根据你正在做的事情,像getopt这个模块可能会有用,但它只在特定情况下才适用,我不太确定它是否适合你的情况。

3

因为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
4

在实际的代码中,一般不建议使用 input()。如果你需要一个 int(整数)和一个 float(浮点数),可以试试下面的方式:

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

具体要实现什么功能,还是要看你的需求,但记住,代码的可读性很重要。那些看起来很酷的复杂一行代码,虽然炫,但在维护代码的时候,最好选择一些简单明了的写法 :)

(顺便说一句:别忘了用 try: ... except (ValueError, IndexError): 来检查错误哦)

撰写回答