use*_*648 2 python stdin raw-input
您好我是在尝试学习python,在C++中从stdin读取字符串我就是这么做的
string str;
while (cin>>str)
do_something(str)
Run Code Online (Sandbox Code Playgroud)
但在python中,我必须使用
line = raw_input()
Run Code Online (Sandbox Code Playgroud)
然后
x = line.split()
Run Code Online (Sandbox Code Playgroud)
然后我必须遍历列表x来访问每个str do_something(str)
这似乎是很多代码只是为了让每个字符串由空格或空格分隔所以我的问题是,有更简单的方法吗?
Python没有特殊情况下为您提供这样一种特定形式的输入,但是当然要为它制作一个小型生成器是微不足道的:
def fromcin(prompt=None):
while True:
try: line = raw_input(prompt)
except EOFError: break
for w in line.split(): yield w
Run Code Online (Sandbox Code Playgroud)
然后,在您的应用程序代码中,使用for语句循环(通常是在应用程序代码级别循环的最佳方法):
for w in fromcin():
dosomething(w)
Run Code Online (Sandbox Code Playgroud)