2013-08-02 2 views
4

Я просто обучаюсь программированию на Codeacademy. У меня есть задание, но не могу понять, что я делаю неправильно.(начинающий) Функции Python Codeacademy

Сначала мне нужно определить функцию, которая возвращает куб значения. Затем я должен определить вторую функцию, которая проверяет, делится ли число на 3. Если это нужно, я должен вернуть его, иначе мне нужно вернуть False.

Heres код:

def cube(c): 
    return c**3 

def by_three(b): 
    if b % 3 == 0: 
     cube(b) 
     return b 
    else: 
     return False 

ответ

8

Вы не ловя возвращаемое значение функции cube. Do b = cube(b). Или еще лучше, сделайте return cube(b).

def cube(c): 
    return c**3 

def by_three(b): 
    if b % 3 == 0: 
     b = cube(b) 
     return b # Or simply return cube(b) and remove `b = cube(b)` 
    else: 
     return False 

При вызове cube функции с аргументом b, он возвращает куб переданного аргумента, вы должны сохранить его в переменной и вернуть, что пользователю, в текущем коде, вы пренебрегаете возвращаемое значение.

+0

Спасибо! что сделал трюк, плохо сделайте мысленное замечание, чтобы всегда хранить новое значение в переменной – LtC

+0

@LtC: Не нужно это делать. Просто 'return cube (b)' тоже работал бы и, возможно, немного читаем. Рад, что я помог. :) –

2

Я думаю, что ответ может также работать:

def cube(b,c): 
     b = c ** 3 
     if b % 3 == 0: 
      return b 
     else: 
      return False 
     return b 

Я знаю, что может быть немного излишним, но я думаю, что может быть еще один способ сделать то, что вы пытаетесь сделать. Сукрит, по-моему, проще.

0

Я закончил Codecdemy, и это мой код.

def cube(n): 
    return n ** 3 
def by_three(number): 
    if number % 3 == 0: 
     return cube(number) 
else: 
    return False 
0

Вот легкое решение, я только что разработали, должен работать :)

def cube(number): 
    return number**3 

def by_three(number): 
    if number % 3 == 0: 
     return cube(number) 
    else: 
     return False 
0
def cube(num): 
    return n ** 3 

def by_three(value): 
    if value % 3 == 0: 
     return cube(value) 
    else: 
     return False 
0

попробуйте позвонить ту же букву для каждого. Вместо использования 'c' и 'b' просто используйте 'c'

def cube(c): 
    return c**3 
def by_three(c): 
    if c % 3 ==0: 
     return cube(c) 
    else: 
     return False 
+0

изменение имени переменной не является решением, а тем фактом, что вы добавили «возврат» перед кубом, так что вы возвращаете возвращаемое значение куба. Код OP возвращал неизмененную переменную 'b' – Nick

+0

Наконец, я не верю, что это обеспечивает правильное решение для def by_three, оно должно просто вернуть var, а не вызвать функцию. – Nick

Смежные вопросы