Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2012 10:26:53

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Простыни if-elif-else

Ребят.
Как избавиться от огромного количества условий?
Смысл в том, чтобы пользователь ввел символ и в зависимости от символа выполнялся запрос по sql.

Простыни if привели к тому, что я уже сам с трудом ориентируюсь в коде. Помогите начинающему Разработчику найти альтернативу или другой подход.

Офлайн

#2 Фев. 27, 2012 10:46:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Простыни if-elif-else

xxnikolayxx
Ребят.
Как избавиться от огромного количества условий?
Смысл в том, чтобы пользователь ввел символ и в зависимости от символа выполнялся запрос по sql.

Простыни if привели к тому, что я уже сам с трудом ориентируюсь в коде. Помогите начинающему Разработчику найти альтернативу или другой подход.
actions={
'+':lambda x,y:x+y,
'-':lambda x,y:x-y,
'*':lambda x,y:x*y,
'/':lambda x,y:x/y,
}

x=1
y=1
polzovatel_vvel='*'

print action[polzovatel_vvel](x,y)



Офлайн

#3 Фев. 27, 2012 11:43:07

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Простыни if-elif-else

разделить и властвовать. (ц)

У тебя проблема не сколько с иф/ельзе, сколько с логикой “все в одной куче”

выноси каждое действие в отдельную процедуру, принимающую определенный параметр и возвращающую определенное значение.

функции в питоне - объекты. потому можно сделать (и делают) словарь, как показал ФишХук.

def vid_set_PUT(param):
....
def vid_set_GET(param):
....
def vid_set_POST(param):
....

....
....
## забацали словарь, значениями которого являются наши функции
run={
'PUT':vid_set_PUT,
'POST':vid_set_POST,
'GET':vid_set_GET
}

## получаем ключ (определяемся, какое действие будет вЬІполняться)
## получить ключ можем как угодно, например
## action=raw_input().strip()
action = request.POST.get('method_','GET')

# вЬІполняем функцию, тоесть обращаемся к значению в словаре run по ключу action
# напр. если action='GET', то run[action] == run['GET'] == функция vid_set_GET
# и конструкция будет єквивалентна data , ret = vid_set_GET(request)
data , ret = run[action](request)



Офлайн

#4 Фев. 27, 2012 13:03:30

xxnikolayxx
От:
Зарегистрирован: 2011-12-05
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Простыни if-elif-else

Ахрененно.
Надо учить словари, они меня уже второй раз спасают - охрененная вещь.
Всем спасибо.

Отредактировано (Фев. 27, 2012 13:04:09)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version