Определить функцию - почему этот код неправильный? - PullRequest
0 голосов
/ 01 марта 2020

Этот код неверен; правильная версия размещена ниже, но я не понимаю причины, почему это не работает. Это выглядит логически структурированным.

def absolute_value(x): #define a function "absolute_value"
    """returns the absolute value of x.
    """
    if x < 0:
        return x = -x
    else:
        return x

Это правильный код:

def absolute_value(x): #define a function "absolute_value"
    """returns the absolute value of x.
    """
    if x < 0:
        x = -x
    return x

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

В python «возврат» не может принять заявление.

https://docs.python.org/3/reference/simple_stmts.html

Надеюсь, это поможет.

0 голосов
/ 01 марта 2020

Вот код, который выглядит как ваша первая попытка:

def absolute_value(x): #define a function "absolute_value"
    """returns the absolute value of x.
    """
    if x < 0:
        return -x
    else:
        return x

Однако он избегает присваивания, которое не является выражением.

Вот альтернативный подход с использованием индексированного кортежа для создания троичного выражения :

def absolute_value(x):
   return (x , -x ) [x <  0] 

Последнее, на что следует обратить внимание: ваш код подразумевает, что вы можете поверить, что способ передать значение обратно вызывающей программе - это изменить аргумент x. Однако значение x не изменяет параметр, используемый при вызове absolute_value (). Рассмотрим этот код, вызывающий вашу вторую функцию:

>>> x = -3
>>> print absolute_value(x)
3
>>> print x
-3

Как вы можете видеть, x все еще имеет значение, которое было до вызова. Значение передается обратно в вызывающую функцию как возвращаемое значение. Итак, вот как вам нужно вызвать функцию для изменения x:

>>> print x ; x=absolute_value(x)
-3
>>> print x
3

То есть вам нужно явно присвоить возвращаемое значение x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...