python只识别我输入的第一行

时间:2014-03-16 17:23:50

标签: python input

使用此代码:

A = raw_input("Please input text here")
print A
print len(A)

对于input,当我从记事本中复制并粘贴时,它只识别以下第一行:

Cars are fast
Motorcycles are faster
Planes are even faster

因此,print Aprint'汽车快速'和print len(A) print 13 input,这是'汽车快速的长度'

如何让Python识别{{1}}的剩余行?

谢谢。

3 个答案:

答案 0 :(得分:5)

raw_input只会读取一行输入。

有关从命令行获取输入的一般概述,请参阅this question的答案。

如果你想使用raw_input,那么一个循环会读取你所有的行,但你需要一种方法来突破,就像这样。

while True:
    A = raw_input("Please input text here (Q to quit)")
    if len(A) == 1 and A[0].lower() == "q":
        break
    print A
    print len(A)

要整理多行,请执行以下操作

data = []
while True:
    A = raw_input("Please input text here (Q to quit)")
    if len(A) == 1 and A[0].lower() == "q":
        break
    data.append(A)

print data
for A in data:
    print len(A)

请记住在粘贴后输入换行符。此外,raw_input提示消息可能无法正确显示。

你可能会发疯并管理提示。期望零长度输入意味着用户正在尝试退出。

data = []
prompt = "Please input text (Q to quit):\n"
while True:
    if data:
        A = raw_input()
    else:
        A = raw_input(prompt)    
    while len(A) == 0:
        A = raw_input(prompt)
    if len(A) == 1 and A[0].lower() == "q":
        break        
    data.append(A)

for A in data:
    print "%s - %i" % (A, len(A))

答案 1 :(得分:0)

sys.stdin对象有read方法。默认情况下,方法读取到文件末尾。

>>> import sys
>>> file_content = sys.stdin.read() # press CTRL+D to close stdin

您可以使用以下方式阅读有关此方法的更多信息:

>>> help(sys.stdin.read)

或者

>>> help(sys.read)

答案 2 :(得分:0)

感谢Graeme的帮助,你解决了我的问题。

对任何可以帮助我理解这一点的人来说,我无法理解的一件事是为什么下面的代码遍历输入中的所有行。我正在阅读它的方式代码只是无限地将输入的第一行附加到数据。

data = []

while True:

    A = raw_input("Please input text here (Q to quit)")
    if len(A) == 1 and A[0].lower() == "q":
        break
    data.append(A)

print data
for A in data:
    print len(A)

再次感谢。