3

对于一个 InterviewStreet 挑战,我们必须能够容纳从键盘输入的 10,000 个字符的字符串,但是当我将一个 10k 长的单词复制/粘贴到我的本地测试中时,它会在 1000 左右时中断。

Python的官方限制是什么?有没有办法改变这种情况?

多谢你们

以下是挑战:

http://www.interviewstreet.com/recruit/challenges/solve/view/4e1491425cf10/4edb8abd7cacd

4

3 回答 3

8

您确定您的10k长单词不包含换行符吗?


raw_input ([提示])

如果提示参数存在,则将其写入标准输出,不带尾随换行符。然后该函数从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。读取 EOF 时,会引发 EOFError。

...

如果readline模块已加载,则 raw_input() 将使用它来提供精细的行编辑和历史功能。

返回的缓冲区没有最大限制(在 python 中) ,并且当我测试输入到标准raw_input输入的一些大长度时,我无法重现您的结果。我试图在网上搜索有关此的信息,但找不到任何可以帮助我回答您的问题的信息。

我的测试

  :/tmp% python -c 'print "A"*1000000' | python -c 'print len (raw_input ())';
  1000000
  :/tmp% python -c 'print "A"*210012300' | python -c 'print len (raw_input ())';
  210012300
  :/tmp% python -c 'print "A"*100+"\n"+"B"*100' | python -c 'print len (raw_input ())'; 
  100
于 2011-12-12T02:13:50.277 回答
5

我有同样的经历,发现raw_input如果你不导入readline模块,python 会限制输入的长度。一旦我导入了readline模块,它就解除了限制(或者至少将它显着提高到我使用的文本工作正常的地方)。这是在我的带有 Python 的 Mac 上2.7.15

于 2018-12-20T14:57:45.763 回答
0

我想这是挑战的一部分。常见问题解答建议 raw_input ( ) 可能不是最佳方法:

下面列出了最常见的(可能是幼稚的)方法。(...)

确实有 Python 标准模块帮助处理系统输入/输出。

于 2011-12-12T03:05:16.443 回答