[Freeschool] [JT] Re: чему стоит учить в школе

Dmitriy M. Maslennikov =?iso-8859-1?q?maslennikovdm_=CE=C1_gmail=2Ecom?=
Чт Окт 23 16:39:55 MSD 2008


23 октября 2008 г. 16:15 пользователь Denis Kirienko <dk на altlinux.ru> написал:
>> #!/usr/bin/python
>> #-*- coding: utf-8 -*-
>> import os
>> import sys
>> print "Первый: "+sys.argv[0]
>> print "Второй:  "+sys.argv[1]
>> print "Третий:  "+sys.argv[2]
>>
>> сделать исполняемым запускать с параметрами через пробел
>
> В системах автоматического тестирования входные данные подаются программе из
> файла или из стандартного ввода, а не из параметров командной строки. Мне
> нужен потоковый ввод из файла или из stdin.
>
> Не годится ваш совет.
А так:

import sys

for i in sys.stdin.read().split():
    print int(i)

Это если влоб. Если ввод большой, то можно так:

import sys

class StreamReader:
    def __init__(self, file=None):
        self.__file = file or sys.stdin
        self.__list = []
    def __readline(self):
        while len(self.__list) == 0:
            line = self.__file.readline()
            if line == '': return
            self.__list = [int(i) for i in line.split()]
    def iter(self):
        while True:
            if len(self.__list) == 0:
                self.__readline()
            if len(self.__list) > 0:
                yield self.__list.pop(0)
            else:
                break

for i in StreamReader().iter():
    print i, type(i)

Конечно, не самый простой путь) С++ наглядней будет.

-- 
Dmitriy M. Maslennikov
rlz на etersoft.ru
rlz на altlinux.org
maslennikovdm на gmail.com
master на armory.ru


Подробная информация о списке рассылки Freeschool