NameError: name 'f' is not defined

0

Zdefiniuj funkcję f(x), która zwraca wartość następującego wyrażania zdefiniowanej na całej osi liczbowej f(x) = 1 - (x + 2)^2, jeśli x <= -2, -(x/2), jeśli -2 < x < 2, (x - 2)^2 + 1, jeśli x > 2.

Moje rozwiązanie:

def f(x):
    if x <= -2:
        return 1 - ((x+2)(x+2))
    elif -2 < x <= 2:
        return -(x/2)
    else x > 2:  
        return ((x-2)(x-2)) + 1
    # put your python code here
Failed test #1 of 35. Runtime error

Traceback (most recent call last):
  File "jailed_code", line 11, in <module>
    print(f(test_x))
NameError: name 'f' is not defined

Dlaczego moje rozwiązanie nie działa prawidłowo?

0

Gdzie jest to Twoje rozwiązanie uruchamiane?
(w sensie na jakiej platformie - jakieś LeetCode czy coś?)

0

put your python code here

W sensie pod tym, czy nad tym? Bo automat też może mieć z tym problem

Poza tym:

1 - ((x+2)(x+2))


Operatora ** nie znasz?Jak by było do piętnastej potęgi to byś pisał (x+2) piętnaście razy?

Po drugie - kilka returnów w jednej funkcji jest mało pythonowe:
```python
def f(x):
    res = None
    if x <= -2:
        res = 1 - (x+2)**2
    elif -2 < x <= 2:
        res =  -(x/2)
    else:  
        res = (x-2)**2 + 1
    return res
0

Masz błąd składniowy, powinno być albo else albo elif warunek

    elif x > 2:  
        return ((x-2)(x-2)) + 1

Przez ten błąd funkcja nie będzie stworzona.

Drugi problem to brak gwiazdki przy mnożeniu - (x-2)*(x-2) to jest mnożenie, (x-2)(x-2) to jest wywołanie funkcji x-2 na argumencie x-2 (bez sensu).

0

Problem jest ogólnie już właściwie rozwiązany.

Moje rozwiązanie:

def f(x):
if x <= -2:
return 1 - ((x + 2) * (x + 2))
elif x <= 2:
return -(x / 2)
else:
return ((x - 2) * (x - 2)) + 1
Jednak drugi wers kodu - "if x <= -2:" - może być poprawiony według narzędzia dydaktycznego. Czy ktoś mógłby napisać, jak można poprawić go?

1 użytkowników online, w tym zalogowanych: 0, gości: 1