NameError: name 'f' is not defined

NameError: name 'f' is not defined
D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
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:

Kopiuj
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
Kopiuj
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?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 318
0

put your python code here

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

Poza tym:

Kopiuj

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

Kopiuj

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
enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
0

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

Kopiuj
    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).

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.