Форум сайта python.su
0
Доброго времени суток!
Уважаемые форумчане, подскажите,пожалуйста,как в Python можно реализовать цикл с постусловием(аналог паскалевского repeat-until) и множественный выбор(аналог case-switch)?
И еще:вот,например,сортировка слиянием 2-х упорядоченных по возрастанию массивов-в Python реализуется императивными средствами или более эффективно с использованием map,lambda и т.д.
Заранее бланодарен!
Офлайн
253
Если коротко - таких конструкций нет.
while 1:
some calc
if some:break
if i==1:
code 1
elif:
code 2
....
def fsw(x,ca):
sw={
1:lambda :x*2,
2:lambda :x*15
}
return sw[ca]()
Офлайн
1
цикл с постусловием: Зачем цикл организовывать вообще, если заведомо предполагается лишь единичное исполнение цикла?
switch/case:
http://www.python.org/dev/peps/pep-0275/
http://www.python.org/dev/peps/pep-3103/
сортировка: все уже давно написано(как посоветовал doza_and сортировку лучше всего осуществлять стандартными библиотечными средствами), зачем изобретать велосипед?
Офлайн
0
Сколько себя помню ненавидел Питон. когда в универе изучали, потом на работе пригодился… и сейчас тоже, но приходится изучать))
Офлайн
32
paredМне с первого раза тоже он не понравился (наверно из за отступов вместо привычных мне “{ }” ), а сейчас считаю его лучшим языком…
Сколько себя помню ненавидел Питон. когда в универе изучали, потом на работе пригодился… и сейчас тоже, но приходится изучать))
Офлайн
0
можно ещё предусмотреть значение по-умолчанию и немного оптимизировать вызов
:
def fsw(x,ca): return{ 1:lambda :x*2, 2:lambda :x*15 }.get(ca, lambda: "error")()
Офлайн