Wpis z mikrobloga

Moi drodzy powiedzialby mi ktos dlaczego jak staram sie puscic kod:

lives = 10

def mistake():
lives =- 1
if lives == 0:
print ("Game over!")
else:
print (f"You have {lives} lives left")
mistake()

wyskakuje mi blad :

UnboundLocalError: local variable 'lives' referenced before assignment

#python
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@hidedeepinside: Reszta ma racje co do użycia słówka Global. Lecz pewne pythonowskie normy i ogólne doświadczenie programistyczne mówi żeby unikać tego wyrażenia jak ognia. Lepiej przekaż tą zmienna jako argument lub zaimplementuj w klasie jako pole (W kontekście programowania OOP). Warto się uczyć od razu dobrych nawyków.
  • Odpowiedz
@Przemosz: dziękuję ślicznie za odpowiedź. Gdzieś właśnie czytałem na google, że global lepiej nie używać. Jeszcze żargon pythonowski mi jest obcy więc spróbuję to narazie uprościć jeszcze bardziej, bo wydaje mi się, że na siłę chce utrudnić sobie napisanie prostego "wisielca"
  • Odpowiedz
@hidedeepinside: bo zmienna lives jest zdeklarowana poza przestrzenia funkcji mistake(), zrób coś takiego, przekaż lives jako argument funkcji mistake w podany sposób def mistake(lives). Następnie w odwołaniu się do funkcji użyj mistake(lives). To przekaże zmienna lives do ciała funkcji. Mimo co warto wiedzieć że lives w funkcji nie będzie równa lives poza funkcją. Koniecznie poczytaj o zasięgu funkcji, bo to to jest to w czym masz błąd. Podrzucam ci jak
Przemosz - @hidedeepinside: bo zmienna lives jest zdeklarowana poza przestrzenia funk...

źródło: comment_1642610638HYj5Mav0M4VHto3nE528MQ.jpg

Pobierz
  • Odpowiedz