2014-09-28 3 views
-1

У меня возникли проблемы с написанием кода для этого вопроса. Я видел этот вопрос в нескольких местах, но я до сих пор не могу понять ответ из советов, которые они предоставили.Python Coding (функция вызова/возвращаемые значения)

Вопрос: Напишите программу, которая имеет две функции: first() и second(). Функция first() должна печатать строку «В функции first()», а затем вызывать функцию second(). Функция второй() должен вывести строку «В функции второго(). В глобальном scopre, вы должны вызвать функцию первой().

Это код у меня есть ..

def first(): 
    first = "In function first" 


def second(): 
    second = "In function second" 

print first(), second() 

ли этот взгляд ближе? Он по-прежнему не работает, но я положил функции печати назад в ..

+3

Вам не хватает части, которая говорит ", а затем вызывает функцию' second() '. Вы думали о том, как и где это сделать? Кроме того, вы не можете использовать 'return' вне функции. – BrenBarn

+0

Вам также не хватает частей, которые говорят 'print' строку ... – jonrsharpe

+0

Я немного изменил сайт, чтобы у меня были функции печати. Я взял их раньше и забыл вернуть их обратно. – Kayla

ответ

0

first = "In function first" не делает функцию возврата "In function first".

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

Но Python не является одним из них. В Python единственным способом вернуть значение является оператор return. И если вы не используете оператор return, вызывающий абонент просто получает None.

Итак, ваш код просто создает локальную переменную с (смутно) с тем же именем, что и функция, присваивает ей значение, а затем игнорирует эту переменную, поэтому она в конечном итоге не имеет никакого эффекта.

Что вы хотите:

def first(): 
    return "In function first" 

def second(): 
    return "In function section" 

print first(), second() 

Однако, в то время как это даст вам желаемый результат, он на самом деле не делать то, что вы сказали, что вы хотели:

Функция первого() должна печатать строку «В функции первая()»

В этом случае она должна в нем есть print, а не return значение, которое кому-то еще приходится печатать.

... а затем вызывать функцию second().

Затем вам нужно поместить вызов second() внутри определения first, а не за его пределами.

Функция второго() должна вывести строку «В функции второго().

И снова, он должен print, не return.

Итак, это гораздо лучше подходит к тому, что вы пытаетесь сделать:

def first(): 
    print "In function first" 
    second() 

def second(): 
    print "In function second" 

first() 

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

+0

Так что мне просто нужно было избавиться от = и изменить его, чтобы вернуться. Спасибо! – Kayla

+0

@ Кайла, я бы не сказал, что это «просто», что вам нужно было сделать. Вам нужно понять, что происходит, а затем вам (по-прежнему) нужно следовать указаниям в задании. – alexis

+0

@alexis, я так понимаю, я просто не знал, что именно я делал неправильно. – Kayla

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