为什么这个python代码在ideone中产生运行时错误?

时间:2014-11-10 03:33:47

标签: python python-3.x input sys

import sys
def func():
    T = int(next(sys.stdin))
    for i in range(0,T):
            N = int(next(sys.stdin))
            print (N)

func()

这里我将输入T用于for循环并迭代T,它再次给出Runtime error time: 0.1 memory: 10088 signal:-1。我尝试过使用sys.stdin.readline()它也会出现同样的错误。

1 个答案:

答案 0 :(得分:2)

我在http://ideone.com/8U5zTQ查看了您的代码。在代码本身看起来很好,但你的输入无法处理。

因为它是:

5 24 2

将是字符串:

"5 24 2"

这几乎不是一个int,即使你试图施展它。因此,您可以将其转换为包含以下内容的列表:

inputlist = next(sys.stdin[:-2]).split(" ")

将列表中的整数放在一行中。循环结束。

之后代码仍然处于循环中,因为它需要2个整数,但至少你得到一些输出。

由于我并不完全是你想要达到的目标,你现在可以遍历该列表并打印输入:

inputlist = next(sys.stdin[:-2]).split(" ")
for i in inputlist
    print(i)

另一个解决方案就是,你只需要在每行输入一个数字,这也可以使用

所以而不是

5 24 2

你放入

5
24
2

进一步的建议

在Ideone上你还在页面的底部有一个错误回溯:

Traceback (most recent call last):
  File "./prog.py", line 8, in <module>
  File "./prog.py", line 3, in func
ValueError: invalid literal for int() with base 10: '1 5 24 2\n'

向您展示了它无法处理您的输入