[python] Na vsetko cyklus for ?

Jan Martinek honza na dp.fce.vutbr.cz
Středa Listopad 15 09:52:29 CET 2006


superman wrote:
>> line = f.readline()
>> while line != '':   # nebo taky while line:
>>      zpracuj(line)
>>      line = f.readline()
>>
>> Takhle je to opravdu správnější.
> 
> A nemáte pocit, že tohle je drbání se levou rukou za pravým uchem? Že 
> prostě dvakrát opisovat co chci (tedy v tomto případě line = 
> f.readline()) je prostě trochu neelegantní? Až ten výraz bude trochu 
> složitější, pak teprve vynikne neelegantnost tohoto řešení.
> 
> Miloslav Ponkrác

Aby se neduplikoval kód, tak v těchto situacích obvykle píšu

while True:
     line = f.readline()
     if not line: break
     zpracuj(line)

nebo třeba

while True:
     try:
         zpracuj(f.readline())
     except KonecSouboru:
         break


Zezačátku se mi to "while True" moc nelíbilo, ale zvykl jsem si. Je to 
způsob, jak napsat cyklus s podmínkou kdekoli.


Další informace o konferenci Python