Почему этот код Python вызывает ошибку времени выполнения в ideone?

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

func()

Здесь я беру ввод T для цикла и итерации по T, это дает Runtime error time: 0.1 memory: 10088 signal:-1 снова, снова. Я пытался использовать sys.stdin.readline() это также дает ту же ошибку.

1 ответ

Я посмотрел ваш код на 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'

который показал вам, что он не может обработать ваш ввод

Другие вопросы по тегам