2016-03-12 3 views
1

Во-первых, я всего лишь новичок, поэтому, пожалуйста, простите меня. У меня есть один вопрос с вопросом: «Определите функцию под названием avg. Он запрашивает у пользователя три цифры и печатает их средний показатель." Тогда еще один вопрос с просьбой «Определить функцию, называемую avg4. Он запрашивает у пользователя четыре номера и возвращается среднее из четырех цифр»В чем разница между «печатью» и «возвратом»?

Я хотел бы знать, если это вопрос с подвохом? Потому что, по моему мнению, «print» печатает вывод в консоли, тогда как «return» является частью функции и фактически не имеет выхода в консоли.

Вот мой код для первого вопроса, какова будет разница во втором вопросе? (Кроме четырех чисел вместо трех)

def avg(a, b, c): 
    sum = (a+b+c)/3 
    return sum 

a1 = avg(float(input("First number: ")), float(input("Second number: ")), float(input("Third number: "))) 
+0

Его обычно используют два слова как синонимы, просто избегать использования этого слова, при написании заданий. Из контекста, что «возврат» будет таким же, как «печать», учитывая, что функциональный контекст отсутствует, как вы упомянули. Кроме того, вы должны отредактировать свой вопрос, потому что код не написан правильно. – BVJ

ответ

2

Любая функция a возвращает значение - что вы могли бы присвоить имя y или перейти на другую функцию b, например y = a(x) или z = b(a(x)).

В определении функции вы можете иметь любое количество return утверждений: когда функция вызывается, операторы выполняются до тех пор, пока не встретит никакого return something заявления, то ссылку на something дается обратно; и любые последующие утверждения игнорируются.

Фактически, если вы не написали явно return, то None будет возвращен неявно в конце функции.

Заявление print не мешает ни одному из этого. Он просто печатает то, что вы ему рассказываете, а затем код продолжается. Отпечатанное значение не должно быть значением, возвращаемым функцией. Это большая разница.

+0

Хорошо, спасибо, поэтому, если меня попросят «распечатать» заявление, они хотят получить какой-то вывод на экране, но если они попросят меня «вернуть» заявление, они просто хотят, чтобы я определил функцию, но нет вывода на экране? – oneman

+0

Да, я имел 'print (a1)' в конце этого, но кто-то редактировал мой вопрос и снял его по какой-то причине. – oneman

+0

Ваша функция может печатать без возврата (ну, как я уже сказал, она будет неявно возвращать None) в первом случае или возвращаться без печати. – Ilja

3

Я не знаю, является ли его трюк, его плохо сформулированный вопрос или писатель точно описывает, что нужно ... но вы должны придерживаться буквального описания и делать то, что он просит. avg должен напечатать среднее значение и вернуть None и avg4 должен вернуть среднее значение. Если позже возникнут какие-либо разногласия («не делайте то, что я сказал, делайте то, что я хотел»), вы можете справедливо заявить, что делали то, что было задано.

В условиях работы с высокими ставками вы должны вернуться и получить разъяснения, поэтому говорить с тем, кто дал вам задание, тоже разумно.

def avg(): 
    """Ask the user for three numbers and print the average""" 
    numbers = [] 
    for i in range(1, 4): 
     numbers.append(float(input('Number {}: '.format(i)))) 
    print('Average', sum(numbers)/3) 

def avg4(): 
    """Ask the user for 4 numbers and return the average""" 
    numbers = [] 
    for i in range(1, 5): 
     numbers.append(float(input('Number {}: '.format(i)))) 
    return sum(numbers)/4) 
0

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

Возврат обычно связан с функцией (хотя и не обязательно!). Функции могут вернуть значение, особенно если вы думаете о функциях в классической аналогии машины , которая что-то берет и выплевывает продукт. Итак, в основном вы скажете xвозвращает что-то, когда x является функцией или некоторой аналогичной структурой.

Печать имеет более грубое значение, она, как правило, просто отображает что-то на экране. Вы можете распечатать что-либо, не возвращая функцию, или вы можете вообще напечатать вне функции. Идея здесь заключается в том, что печать может рассматриваться как определенный тип возврата, но не как синоним.

Подробнее о и printing

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