2016-03-29 39 views
1

İlk i satır sayısını almak gerekir ve bu yüzden yapın:Neden arka arkaya iki kez sys.stdin içinde döngü yapamıyorum? (Python)

for line in sys.stdin: 
    c = c + 1 
print("Number of lines:" + str(c)) 
A = [[] for x in range(0,c)] 
print(A) 

Ama giriş okumaya gerek çünkü sonra yine bir for line in sys.stdin: girmeniz gerekir.

Bu, işe yaramaz ve ikinci kez girdi neredeyse tüketildi ve şimdi boş.

+0

: girişini tüketilir ve şimdi boştur. Neden ilk etapta hat sayısına ihtiyacın var? – Schore

cevap

2

kaydet bir değişkene stdin girişi:

lines = sys.stdin.readlines() 

Şimdi birçok kez olarak lines değişken üzerinde döngü sizin gibi gibi.

Sadece satırları sayıyorsanız, bir döngüye ihtiyacınız yoktur; Sadece c = len(lines) deyin.

1

Birden çok kez erişmek istiyorsanız, girişi kaydetmelisiniz. İlk for döngüsü, akışı olmayan, tüketilemez. Her satırı işleme ediyorsanız

lines = sys.stdin.readlines() 

, gibi bir şey tercih edebilirsiniz:

results = [foo(i) for i in sys.stdin] 
print("Have {} results".format(len(results)) 
Ayrıca sayımını tutmasına olanak enumerate kullanabilirsiniz

: Tam işte

for cnt, line in enumerate(sys.stdin, start=1): 
    foo(line) 

print('Saw {} lines'.format(cnt))