Найти - Пользователи
Полная версия: Функция выполняющая действия оператора if. Помогите решить задачу)
Начало » Центр помощи » Функция выполняющая действия оператора if. Помогите решить задачу)
1
Emma
Здравствуйте!
Помогите пожалуйста. Нужно написать функцию, которая делает то же самое, что и конструкция if.
Буду рада любой помощи.
JOHN_16
есть встроенная функция cmp, есть булевые операции AND OR NOT.
А вообще задание из разряда издевательств =)
Emma
Рада, что не одна я так думаю.
А задание выглядит так. Может я не так описала)
Попробуй написать функцию, которая делает то же самое, что и конструкция 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())
Paranoia_Agent
[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
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