Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2015 21:24:31

Emma
Зарегистрирован: 2015-03-04
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция выполняющая действия оператора if. Помогите решить задачу)

Здравствуйте!
Помогите пожалуйста. Нужно написать функцию, которая делает то же самое, что и конструкция if.
Буду рада любой помощи.

Офлайн

#2 Март 4, 2015 21:37:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Функция выполняющая действия оператора if. Помогите решить задачу)

есть встроенная функция cmp, есть булевые операции AND OR NOT.
А вообще задание из разряда издевательств =)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 4, 2015 21:52:17

Emma
Зарегистрирован: 2015-03-04
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция выполняющая действия оператора if. Помогите решить задачу)

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

Офлайн

#4 Март 5, 2015 04:11:34

Paranoia_Agent
Зарегистрирован: 2014-06-25
Сообщения: 75
Репутация: +  5  -
Профиль   Отправить e-mail  

Функция выполняющая действия оператора if. Помогите решить задачу)

[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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version