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

Denis Kirienko =?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Чт Окт 23 16:57:07 MSD 2008


Dmitriy M. Maslennikov пишет:

> А так:
> 
> import sys
> 
> for i in sys.stdin.read().split():
>     print int(i)

О, это уже выход. Я же писал - что у Питона есть своя логика и свои 
методы, мне, человеку, испорченному C++, очень тяжело доходить до таких 
подходов.

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

Да, ввод реально бывает очень большой, до мегабайта.

> 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)

Ужас, как это школьник должен запомнить?

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

Да, хочется именно аналога функций C++ и Паскаля. В принципе, у нас есть 
модуль, который реализует такую функциональность, получается вроде:

a=fin.readInt()
s=fin.readString()

Легко и удобно. Но модуль-то самописный, нестандартный...

--
Денис



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