Wpis z mikrobloga

Hej, jak uzysać przypisanie 'o' do player2 jeżli player1 wybierze 'x'? Nie jestem w stanie przypisać, żadnej wartości w funkcji do player2. :/

player1 = ''
player2 = ''
players_list = (player1, player2)

player1 = input("Wybierz marker: 'x' czy 'o' ?\n")

def markers():
if player1 == 'x':
player2 = 'o'

markers()
print(player1,player2)

#python
  • 5
@Tomz: Musisz raczej dać global player2 w funkcji markers, funkcja ma swój własny scope i domyślnie zwraca None. Ogólnie z tego co czytałem to nie jest to dobra praktyka z tym globalem. Najlepiej coś takiego to raczej budować na klasach
@Tomz: może to zrobisz na szybko tak, pewnie mozna to zrobić lepiej:
class Player:
def _init(self):
self.marker = ''
def set
marker(self):
self.marker = input("Wybierz x lub o\n")
def checkmarker(self, obj2):
if self.marker == 'x':
obj2.marker = 'o'

player1 = Player()
player2 = Player()
player1.set
marker()
player1.check_marker(player2)
print(player1.marker, player2.marker)

Tak na pewno działa, mam nadzieje że jakoś dojdziesz co do wcięć, nawet podkreślanie w nazwach zmiennych zjada omg
@Islam: ok, dzieki za pomoc, przyjrzę się temu choć wg. kursu to nie przerabiałem jeszcze klas. Czyli mój player2 i przypisanie markera działa tylko w obrębie funkcji, po za nią jest tak jak na początku, czyli = ' '. Kurde myślałem, że to proste do rozwiązania :D
@Tomz: Dokładnie jest jak piszesz,mógłbyś zrobić że funkcja zwraca zmienną player2 i przypisujesz ją jeszcze raz np. player2 = markers(), ale w tym wypadku funkcja musi coś zwracać, bo jak nie to będzie None

Ogólnie mam nadzieję że dobrze piszę i nie wprowadzam w błąd :P nie jestem programistą jak coś