2015-10-16 1 views
0

Реализовать функцию test_number, которая принимает в качестве входных данных число и строку:Определение функции: как заставить строку сказать, является ли целое значение true или false?

(one of 'even', 'odd', 'positive', or 'negative') 

Функция возвращает True если число имеет свойство, указанное в строке, и False, если он не делает.

Он работает для четной/нечетной части, поэтому я думаю, что это дает ошибочные результаты для положительного/отрицательного результата, потому что раньше я использовал функцию else: return 'False' ".

+1

* Прежде всего, то, что «не утверждать» * Держу пари, это ответ в предыдущей главе вашего учебника ... –

+1

Return boolean 'True' или' False' (без кавычек), чтобы вы могли избавиться от '== 'True'' в операторах' assert'. Кроме того, вам нужно использовать 'assert not', чтобы вы могли проверить, правильно ли ваша функция работает правильно, например. 'test_number (100, 'odd')'. – ekhumoro

+0

@ekhumoro Спасибо! Это было именно то, о чем мне было интересно (утверждения assert not) – Deer530

ответ

2

Прежде всего, что означает «утверждать не»?

Это assert заявление с выражением, которое начинается с логическим оператором отрицания not.

И, во-вторых, почему мой код производит ложные результаты?

Первый else достиг результатов False. Удалите все пункты else и верните False в конце, так как это будет по умолчанию, если ничего не будет истинным.

+0

Итак, я попытался помещать предложение else в конец (который работал), но когда я помещаю assert assert, появляется всплывающее сообщение. Если я вставляю только утверждающие утверждения, код работает. Как я могу заставить свой код работать с операторами assert not? – Deer530

+0

Не кладите 'else'. Просто вернись. –

0

Вы можете поместить свои строки свойств в словаре:

def test_number(n, s): 
    conditions = {'even': (n % 2 == 0), 
        'odd': (n%2 == 1), 
        'positive': (n >=0), 
        'negative': (n<0)} 

    return conditions.get(s, None) 

assert test_number(14, 'even') 
assert not test_number(100, 'odd') 
assert test_number(33, 'positive') 
assert not test_number(100, 'negative') 
Смежные вопросы