Wpis z mikrobloga

robię prostą gierkę w kółko i krzyżyk, stworzyłem trzy funkcje, jedna wyświetla planszę do gry, druga przypisuje graczom imiona i kółko lub krzyżyk, trzecia nieważne. Gra nie jest jeszcze skończona, ale chciałem stestować to co do tej pory mam i wszystkie trzy funkcje wpakowałem do jednej o nazwie "game". W pewnym momencie wyskakuje mi błąd, że jedna ze zmiennych nie jest zdefiniowana, mimo tego, że jest zdefiniowana w jednej z poprzednich funkcji. To praktycznie mój pierwszy kontakt z funkcjami w funkcjach, dlatego nie wiem jak w takich wypadkach działa definiowanie zmiennych. Poratuje ktoś?
#python #pytanie #pytaniedoeksperta
Pobierz
źródło: comment_1646939291BV7c41iL6dtwwqAKknWUv7.jpg
  • 14
funkcje w funkcjach to potrzebujesz klasy.
Wtedy, jak w jakiejś funkcji zdefiniowałeś f, to inna funkcja bedzie mogła 'zobaczyć' co jest w tym f
W pewnym momencie wyskakuje mi błąd, że jedna ze zmiennych nie jest zdefiniowana, mimo tego, że jest zdefiniowana w jednej z poprzednich funkcji.


@Oake: To tak nie działa, nie możesz się odwołać do zmiennej zdefiniowanej w jednej funkcji z innej funkcji. Najprościej będzie jak zwrócisz zmienną z pierwszej funkcji i wtedy przekażesz ją do drugiej. I wrzuć cały kod, będzie łatwiej Ci pomóc
I funkcja

def board(f):


b1 = (" "+f[7]+" | "+f[8]+" | "+f[9]+" ")
b2 = ("-----------")
b3 = (" "+f[4]+" | "+f[5]+" | "+f[6]+" ")
b4 = ("-----------")
b5 = (" "+f[1]+" | "+f[2]+" | "+f[3]+" ")

print(b1)
print(b2)
print(b3)
print(b4)
print(b5)

II funkcja

def welcomescreen():
import random

f = [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "]

figures =
@Oake: wrzuc caly kod. Ale w skrocie i bardzo duzym uproszczeniu: zmienne sa lokalne dla danej funkcji. Jak masz funkcje funkcja1() i funkcje funkcja2() to wszystkie zmienne ktore w nich podeklarujesz sa widoczne tylko w tej funkcji w ktorej je deklarujesz. Jak w funkcja1() zadeklarujesz np f=5, to to f jest niewidoczne dla funkcja2()
@schon: Widzisz, ze sie uczy dopiero, a Ty z dekoratorami wyjezdzasz hehs. Dla wyjasnienia: dekoratory to juz koncept bardziej zaawansowany i nie musisz sie w ogole tego uczyc na razie.
@Oake: Wiesz, wrzuc ten kod przez ta stronke co podalem. Skopiuj tam caly, gdzies na dole bedziesz mial przycisk do "create new paste" i daj linka. Tam bedzie zachowane formatowanie kodu (ktore w pythonie jest wazne) i bedzie latwiej to rozczytac. I wrzuc calosc, caaaalutki plik
@Oake: A dobra, bo Ty to chyba w jupyterze robisz i dlatego nie masz calego pliku do pokazania. Tutaj znowu dales bez formatowania (brak wcięć w kodzie). No to tyle tylko zostaje pomoc, co wczesniej juz zostalo napisane i wyjasnione. Zmienne lokalne sa widoczne tylko w obrebie danej funkcji. Musisz to f przekazywac z funkcji do funkcji