Найти - Пользователи
Полная версия: Простыни if-elif-else
Начало » Python для новичков » Простыни if-elif-else
1
xxnikolayxx
Ребят.
Как избавиться от огромного количества условий?
Смысл в том, чтобы пользователь ввел символ и в зависимости от символа выполнялся запрос по sql.

Простыни if привели к тому, что я уже сам с трудом ориентируюсь в коде. Помогите начинающему Разработчику найти альтернативу или другой подход.
FishHook
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)
alexzander77
разделить и властвовать. (ц)

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

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

функции в питоне - объекты. потому можно сделать (и делают) словарь, как показал ФишХук.
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)
xxnikolayxx
Ахрененно.
Надо учить словари, они меня уже второй раз спасают - охрененная вещь.
Всем спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB