chcialem, zeby odejmowalo od lives = 10 wiec pewnie cos poknocilem
@hidedeepinside: https://pastebin.com/PKMDQ3hB global lives oznacza, że wewnątrz funkcji będziesz używał zmienną z pierwszej linijki a nie nowej wewnątrz funkcji. lives -= 1 to skrót od lives = lives - 1
@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.
@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"
jak wpisalem wartosc lives = 7 przed while "_" dziala to bez problemu i odejmuje od 7 tak jak powinno, ale jak probowalem uzyc def mistake() (ktore w kodzie jest #) wtedy wyskakiwal mi UnboundLocalError.
@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 to
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
Komentarz usunięty przez autora
dorzuć "global" przez lives
albo:
przerób to na klase, niech lives będzie property a mistake metodą.
https://pastebin.com/357mZpwz
You have -1 lives left
Komentarz usunięty przez autora
@hidedeepinside: https://pastebin.com/PKMDQ3hB
global lives oznacza, że wewnątrz funkcji będziesz używał zmienną z pierwszej linijki a nie nowej wewnątrz funkcji.
lives -= 1 to skrót od lives = lives - 1
https://pastebin.com/bxgcfXNU
jak wpisalem wartosc lives = 7 przed while "_" dziala to bez problemu i odejmuje od 7 tak jak powinno, ale jak probowalem uzyc def mistake() (ktore w kodzie jest #) wtedy wyskakiwal mi UnboundLocalError.