funkcja która nie zwraca wyników

funkcja która nie zwraca wyników
N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0

Dlaczego mam inny wynik funkcji kod poniżej

wynik funkcji ma być taki np.
Jaka jest twoja ulubiona książka: SKARBY śWIATA
Moja ulubiona książka to Skarby Świata
A moja:
Moja ulubiona książka to Janko Muzykant

Kopiuj
def wyswietltytuł(t="Janko Muzykant"):
    t=t.title()
    print("moja ulubiona książka to ",t)
t=input("jak jest twoja ublubiona książka? ")
wyswietltytuł()
print("A moja ")
wyswietltytuł()
stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

Nie przekazujesz wartosci do wywolania procedury. A w szczegolnosci w ogole nie zapisujesz tego co user wprowadzi. Dobra - zapisujesz. Tylko ta nazwa jest tak krotka, ze mi sie wydawalo, ze jej nie ma 😄

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0
stivens napisał(a):

Nie przekazujesz wartosci do wywolania procedury. A w szczegolnosci w ogole nie zapisujesz tego co user wprowadzi

czyli jak powinno być?

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

No wyswietltytul(t)

Ale druga linijka to Ci raczej scrashuje ten program

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0

Proszę o działający kod bo nie wiem jak to zrobić?

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
def wyswietl_tytuł(tytul):
    print(f"moja ulubiona książka to {tytul}")
tytul = input("jak jest twoja ublubiona książka?: ")
wyswietl_tytuł(tytul)
print("A moja ")
wyswietl_tytuł("Janko Muzykant")
LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
8

Co ci da działający program, jeśli nie zrozumiesz, o co chodzi?

Ogólnie chodzi o to, że zmienne w Pythonie (jak i w innych językach programowania) mają różny zakres widoczności. Zmienna t w argumencie funkcji:

Kopiuj
def wyswietltytuł(t="Janko Muzykant"):

to jest inna zmienna niż zmienna globalna

Kopiuj
t=input("jak jest twoja ublubiona książka? ")

Masz więc dwie różne zmienne o tej samej nazwie t.

Generalnie należy dążyć do tego, żeby zmienne miały jak najmniejszy zakres. I przekazywać dane właśnie choćby przez argumenty:

Kopiuj
wyswietltytuł(t) 

Jeśli idziesz do McDonalda, to dostajesz hamburgera od pracownika sklepu (tak jak możesz przekazywać dane przez argumenty), a nie idziesz za ladę i nie pieczesz sobie samemu.

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0
LukeJL napisał(a):

Co ci da działający program, jeśli nie zrozumiesz, o co chodzi?

Ogólnie chodzi o to, że zmienne w Pythonie (jak i w innych językach programowania) mają różny zakres widoczności. Zmienna t w argumencie funkcji:

Kopiuj
def wyswietltytuł(t="Janko Muzykant"):

to jest inna zmienna niż zmienna globalna

Kopiuj
t=input("jak jest twoja ublubiona książka? ")

Masz więc dwie różne zmienne o tej samej nazwie t.

Generalnie należy dążyć do tego, żeby zmienne miały jak najmniejszy zakres. I przekazywać dane właśnie choćby przez argumenty:

Kopiuj
wyswietltytuł(t) 

funkcjaniez.png
czyli to jest źle bo to jest z książki

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
1

BTW temat się nazywa funkcja która nie zwraca wyników i piszesz wynik funkcji.
Może użyłeś to jako skrótu myślowego, tym niemniej w programowaniu zwroty wynik funkcji czy zwracać coś przez funkcję mają swoje specjalne znaczenie. Funkcje mogą coś zwracać za pomocą słowa kluczowego return, ale w twoim przypadku tak się nie ma dziać, tylko funkcja ma coś zrobić (dać jakiś efekt uboczny, tutaj w postaci wywołania print).

Taka dygresja, ale w sumie to jest ważne rozróżnienie.

ledi12
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Nie wiem co to za książka, ale patrząc po podanym przykładzie radziłbym jak najszybciej się jej pozbyć (Dla własnego dobra). Samo mieszanie tej samej nazwy zmiennej jako globalnej i wewnętrzno-funkcyjnej to jakiś srogi wtf.

Eldorad O.
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 517
0

Przecież ten koleś to troll jakiś.
Pierwsze jego posty - gdzie pyta się o kwestie związane z programowaniem - są sprzed 4 lat.
Przez 4 lata nie nauczył się przekazywać argumentu do funkcji?
No nie sądzę.

TS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 865
0

Zamiast wrzucić w pierwszym poście zdjęcie z książki i powiedzieć co to za książka to gość robi show :)

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.