Форум сайта python.su
Здравствуйте!
Помогите пожалуйста. Нужно написать функцию, которая делает то же самое, что и конструкция if.
Буду рада любой помощи.
Офлайн
есть встроенная функция cmp, есть булевые операции AND OR NOT.
А вообще задание из разряда издевательств =)
Офлайн
Рада, что не одна я так думаю.
А задание выглядит так. Может я не так описала)
Попробуй написать функцию, которая делает то же самое, что и конструкция if.
def if_function(condition, true_result, false_result):
“”“Возвращает true_result если условие condition истинно и false_result в противном случае.”“”
if condition:
return true_result
else:
return false_result
В действительности эта функция не во всех случаях идентична конструкции if. Для доказательства этого факта напишите функции c, t и f так, что with_if_statement возвращает число 1, а with_if_function не возвращает.
def with_if_statement():
if c():
return t()
else:
return f()
def with_if_function():
return if_function(c(), t(), f())
Офлайн
[user@localhost ~] $ python Python 2.7.8 (default, Nov 10 2014, 08:19:18) [GCC 4.9.2 20141101 (Red Hat 4.9.2-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def func1(): ... print(1) ... >>> def func2(): ... print(2) ... >>> def newif(sign, x, y): ... return not(cmp(sign, '=') or cmp(x, y)) or not (cmp(sign, '>') or cmp(x, y) - 1) or not (cmp(sign, '<') or cmp(x, y) + 1) ... >>> {True : func1, False : func2}[newif('=', 1, 1)]() 1 >>> {True : func1, False : func2}[newif('=', 1, 2)]() 2 >>> {True : func1, False : func2}[newif('<', 1, 2)]() 1 >>> {True : func1, False : func2}[newif('<', 2, 2)]() 2 >>> {True : func1, False : func2}[newif('>', 2, 2)]() 2 >>> {True : func1, False : func2}[newif('>', 3, 2)]() 1
>>> {True : func1, False : func2}[1 == 1]() 1
Отредактировано Paranoia_Agent (Март 5, 2015 04:18:42)
Офлайн