如果您不知道行数,是否可以使用raw_input()获取所有行?

时间:2015-05-28 08:55:22

标签: python

我知道您可以使用raw_input()函数从stdin获取一行。但是如果我不知道我必须得到的线数呢?

我知道我可以导入' sys'然后使用while循环获取所有行,但有没有类似的方法使用raw_input()完成此类任务?

3 个答案:

答案 0 :(得分:2)

这可能很简单:

while(raw_input()):
    #print "I received input"
    #Do some processing here
    #terminates when user hits enter without any text.

根据Python文档,""(空字符串)被视为False。因此,当用户没有输入任何内容时,循环终止。

或者,如果您想要用户输入的输入,则可以使用:

while True:
    text = raw_input()
    if not text:
        break
    #Do some processing here

或者,如果您想指定其他一些断点,那么您可以检查while循环内的条件:

break_word = "q"
while True:
    text = raw_input()
    if text == break_word:
        break
    #Do some processing here

答案 1 :(得分:1)

如果您想存储数据,请考虑使用list

在循环中读取值。如果您从循环中获得空行break,则将输入的数据添加到列表中。

data = []
while True:
    line = raw_input()
    if not line:
        break()
    data.append(line)

答案 2 :(得分:1)

如果要存储所有行,可以使用list comp:

for line in iter(lambda: raw_input("enter line or 'q' to quit"), "q"):
    print(line)

或使用循环:

q

当用户输入iter时,循环将中断。 while True: inp = raw_input("Enter line or 'q' to quit") if inp == "q": break 的第二个参数是一个标记值,无论您提供什么,因为该值可以在用户输入时中断循环。

使用iter相当于:

timeLimit

更简洁。