[python] for-else -> wtf?

Koumes21 koumes21 na gmail.com
Středa Duben 23 15:47:05 CEST 2008


Například když chci otestovat všechny položky seznamu nebo se všemi něco
provést a za určitého předpokladu vím, že nemusím v testování pokračovat, je
jednodušší použí break. Ale když chci na základě toho jestli proces proběhl
až do konce nebo byl přerušen něco provést, použiju právě else.
Například takto:

n=raw_input()
for znak in n:
    if not n in "0123456789abcdef":
        print "spatne"
        break
else:print "spravne"

pozn.: místo toho by šlo v nové verzi použít all(map(lambda x:x in
"0123456789abcdef",n))

kdyby ovšem neměl řetězec ani jeden znak, pak by to podle vašeho systému
nebylo ani "spravne" ani "spatne", tak jak to je nyní v pythonu
bude vysledek "spravne"

Koumes21

2008/4/23, Dusan Zatkovsky <msk.conf na seznam.cz>:
>
> DD.
>
> Riesili sme tu s kolegami jeden priklad, ktory na prvy pohlad bol
> syntakticky
> nespravne. Potom som na neho narazil na
> http://docs.python.org/tut/node6.html#SECTION006400000000000000000 a z
> dokumentacie som zistil, ze je dokonca syntakticky spravne.
>
> Tak som sa s for-else chcel zoznamit a tak som si vytvoril 3 testcase:
>
> # cyklus sa vykona
> for x in 'a':
>         pass
> else:
>         print "test1"
>
> # cyklus sa vykona a breakne
> for x in 'a':
>         break
> else:
>         print "test2"
>
> # cyklus sa nevykona
> for x in '':
>         pass
> else:
>         print "test3"
>
>
> Vysledok zodpoveda tomu, co vravi dokumentacia, ale mne to pride zvratene.
>
> Preco to else zavisi na break vo vnutri cyklu a nie na tom, ci sa cyklus
> vykonal, alebo nie? Ked totiz na toto narazi niekto, kto sa python uci,
> tak
> sa z toho osype ( pisem prilezitostne v pythone uz 2 roky a je to aj moj
> pripad ).
>
>
> Mozete mi niekto ozrejmit, co tym autor myslel a preco je ta logika
> postavena
> prave takto? Intuicia mi totiz hovori, ze else by sa malo vykonat prave
> ked
> sa nevykona ani jeden priebeh cyklu...
>
>
> Dik
>
>
> --
> Dusan
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080423/a8a88fce/attachment.htm 


Další informace o konferenci Python