?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

while else - morfizm


Apr. 16th, 2014 12:51 am while else

>>> x = 1
>>> while x < 3:
...     x = x + 1
... else:
...     print 'what the ...?'
...
what the ...?

>>> x = 1
>>> while x > 3:
...     x = x + 1
... else:
...     print 'what the ...?'
...
what the ...?

Current Mood: gigglygiggly

21 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:archaicos
Date:April 16th, 2014 08:31 am (UTC)
(Link)
Indeed, what the ... are you doing?
From:morfizm
Date:April 16th, 2014 08:43 am (UTC)
(Link)
Executing python code.
From:archaicos
Date:April 16th, 2014 08:46 am (UTC)
(Link)
Yeah, but did you know about that while/else feature?
From:morfizm
Date:April 16th, 2014 08:50 am (UTC)
(Link)
I didn't before I decided to teach Kate Python's grammar (yesterday night) and we encountered that "else" is a valid thing for loops :)
From:morfizm
Date:April 16th, 2014 08:52 am (UTC)
(Link)
I think it's kinda fun thing. It's surprising I never knew about while being a Python developer for 3 years :) (no, I didn't read the grammar before, but I've studied a lot of code).

Edited at 2014-04-16 08:52 am (UTC)
From:archaicos
Date:April 16th, 2014 08:56 am (UTC)
(Link)
I read about it yesterday and I've been a Python programmer for like 3 weeks. :)
From:morfizm
Date:April 16th, 2014 09:02 am (UTC)
(Link)
Hm... maybe there's something about yesterday, rather than length of being a Python programmer? :)
From:archaicos
Date:April 16th, 2014 09:09 am (UTC)
(Link)
Yeah, yesterday I saw a page in the manual where the construct was described. :)
From:morfizm
Date:April 16th, 2014 09:13 am (UTC)
(Link)
That's my point, there was definitely some while-else magic yesterday. Maybe it's astrological? A "while" star was at certain angle with "else" star :)
From:archaicos
Date:April 16th, 2014 06:32 pm (UTC)
(Link)
Во всём виноват Dijkstra. Напридумывал всяких a star'ов. :)
From:eternele
Date:April 16th, 2014 04:46 pm (UTC)
(Link)
сюрприз. у меня мозг заскрипел.
From:morfizm
Date:April 17th, 2014 06:10 am (UTC)
(Link)
Понимаю, у меня тоже :)
From:lyuden
Date:April 16th, 2014 06:15 pm (UTC)
(Link)
AAAAA,блин. Столько лишнего кода
From:lyuden
Date:April 16th, 2014 06:18 pm (UTC)
(Link)
for i in []:
print 'a'
else:
print 'b'
From:archaicos
Date:April 16th, 2014 06:30 pm (UTC)
(Link)
А просто print 'b' не пробовали? :)
From:lyuden
Date:April 16th, 2014 06:41 pm (UTC)
(Link)
ХА ХА.

Тем не менее у меня такая фигня с итерацией по спискам и особой обработкой случая пустого списка в коде встречается достаточно часто.

From:morfizm
Date:April 16th, 2014 07:11 pm (UTC)
(Link)
У for-else и while-else совершенно разная семантика. Причем тут особая обработка пустого списка? :)

См внимательно примеры из поста, wtf печатается в обоих случаях.

Edited at 2014-04-16 07:12 pm (UTC)
From:lyuden
Date:April 17th, 2014 02:10 am (UTC)
(Link)
Ты написал

> that "else" is a valid thing for loops

Ну я и решил побробовать для for.

Оно сработало.


У меня в коде при обработке данных бывает встречается такая фигня

if some_list:
for element in some_list:
do_something(element)
else:
empty_list_handling()


Я вчера чего то подумал что он эквивалентен такому коду


for element in some_list:
do_something(element)
else:
empty_list_handling()

Сейчас проверил - нифига.

Да посмотрел примеры повнимательнее. Да теперь я понял почему там wtf



Edited at 2014-04-17 02:21 am (UTC)
From:morfizm
Date:April 17th, 2014 06:09 am (UTC)
(Link)
Ага :)


Кстати, в моём коде фигня вроде if !some_list: empty_list_handling() не встречается вовсе. Если что-то надо делать для пустого списка, то, как правило, это же нужно делать при инициализации или финализации всегда, ну или я напишу так, что нужно будет всегда. Это экономит лишний test case.


Edited at 2014-04-17 06:10 am (UTC)
From:lyuden
Date:April 17th, 2014 05:15 pm (UTC)
(Link)
Ну я видимо не дошел до таких высот. Хотя вроде куски кода которые работают с "корректными" данными есть. Но и то что я написал вроде встречается
From:lyuden
Date:April 17th, 2014 02:22 am (UTC)
(Link)
Блин. С утра дошло. Я думал что это два разные куска кода.