funkcja która nie zwraca wyników

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

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ł()
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 😄

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

1

No wyswietltytul(t)

Ale druga linijka to Ci raczej scrashuje ten program

0

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

1
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")
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:

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

to jest inna zmienna niż zmienna globalna

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:

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.

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:

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

to jest inna zmienna niż zmienna globalna

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:

wyswietltytuł(t) 

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

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.

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.

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ę.

0

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

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