2012-10-17 3 views
0

У меня есть проблема со следующей спецификации:вход с разделителями в Python

Входной сигнал:

Первая строка содержит целое число N, количество элементов в данной сходящейся последовательности. Далее следует N целых чисел A1, A2 .... An, Ai - i-й элемент данной последовательности. Эти числа могут быть разделены пробелом или разделителем новой строки.

Как я могу обрабатывать входные данные таким образом? Я попытался следующим, но это работает только для пространства отделившегося elements.When используется с новой строкой разделенных элементов грейдер бросает «превышено время»

import sys 
counter=0 
A=[] 
for line in sys.stdin: 
    if counter!=0: 
     A+=[int(Ai) for Ai in line.split()] 
    else: 
     N=int(line) 
     counter+=1 
+0

'line.split()' также работает на разделителях, как, 'и многие другого. –

+0

Да, но в каждой строке у меня есть либо пробелы, либо только число. Нет других разделителей. – Controller

+0

Насколько я могу судить, ваш код работает нормально (пока первая строка содержит только 1 номер), и пока данные помещаются в 'sys.stdin' (и' sys.stdin' правильно завершен) ... Конечно, вы получите больше, чем просто N элементов ... – mgilson

ответ

1

Предполагая, что вы читаете из файла (sys.stdin также файл):

f = open('path/to/file') 
N = int(f.readline().strip()) 
A = [] 
while len(A) < N: 
    A.extend(int(i) for i in f.readline().strip().split()) 

Надеется, что это помогает

+0

Я читаю с stdin.what should Я пишу внутри открытого? – Controller

+0

Вам не нужно открывать 'sys.stdin'. Это уже открытый файл – inspectorG4dget

+0

, поэтому я пишу: N = int (sys.stdin.readline(). Strip()) A = [] while len (A) Controller

Смежные вопросы