Передайте переменную между несколькими несколькими функциями |Python 3 - PullRequest
0 голосов
/ 26 ноября 2018

спасибо за чтение этого поста.Я хочу сделать продвинутую игру TicTacToe с ИИ и другими вещами.Мне нужно передать переменную spot (s1-s9) между различными функциями.Я уже довольно долго занимаюсь исследованиями, и я хотел бы найти ответ.Вот часть кода, которую мне нужно выполнить:

def set_spots(s1, s2, s3, s4, s5, s6, s7, s8, s9):
    return s1,s2,s3,s4,s5,s6,s7,s8,s9

def print_spots():

    print('\n')
    print(str(s1) + ' | ' + str(s2) + ' | ' + str(s3))
    print('--+---+--')
    print(str(s4) + ' | ' + str(s5) + ' | ' + str(s6))
    print('--+---+--')
    print(str(s7) + ' | ' + str(s8) + ' | ' + str(s9))

def game_loop():

    set_spots(1,2,3,4,5,6,7,8,9)
    print_spots()

game_loop()

Я хочу иметь возможность устанавливать точки в любой функции, например, если бы у меня была функция turnX.Например, если бы у меня было:

def turnx(): #This isnt in this code though
    #if stuff == other stuff (just example):
        set_spots('X','O',3,4,5,6,7,8,9)

Но вывод был:(о чем вам не нужно беспокоиться), затем сохраните это значение для распечатки.Как если бы я изменил 1 на X в игре, его нужно сохранить, чтобы его можно было распечатать.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Я считаю, что вы должны попытаться использовать переменные из заданных мест, в местах печати:

def print_spots(s1, s2, s3, s4, s5, s6, s7, s8, s9):
    return s1,s2,s3,s4,s5,s6,s7,s8,s9):

    print('\n')
    print(str(s1) + ' | ' + str(s2) + ' | ' + str(s3))
    print('--+---+--')
    print(str(s4) + ' | ' + str(s5) + ' | ' + str(s6))
    print('--+---+--')
    print(str(s7) + ' | ' + str(s8) + ' | ' + str(s9))

def game_loop():

    print_spots(1,2,3,4,5,6,7,8,9)
    print_spots()

game_loop()

, если это не сработает, тогда я не уверен

0 голосов
/ 26 ноября 2018

Вы можете сделать это без необходимости использования ненужной функции set_spots().Все, что вам нужно, это массив:

def turnx(s):
    if 1 == 1: # (a condition):
        s = ['X','O',3,4,5,6,7,8,9]  
    return s

def print_spots(s):
    print('\n')
    print(str(s[0]) + ' | ' + str(s[1]) + ' | ' + str(s[2]))
    print('--+---+--')
    print(str(s[3]) + ' | ' + str(s[4]) + ' | ' + str(s[5]))
    print('--+---+--')
    print(str(s[6]) + ' | ' + str(s[7]) + ' | ' + str(s[8]))

def game_loop():
    spots = [1,2,3,4,5,6,7,8,9] # Use an array
    print_spots(spots)
    spots = turnx(spots)
    print_spots(spots)

game_loop()

Это выводит:

1 | 2 | 3
--+---+--
4 | 5 | 6
--+---+--
7 | 8 | 9


X | O | 3
--+---+--
4 | 5 | 6
--+---+--
7 | 8 | 9
0 голосов
/ 26 ноября 2018

сделайте себе одолжение и представьте пятна в виде списка.Затем сохраните этот список в переменной при вызове набора мест и передайте его на печать:

def set_spots(s1, s2, s3, s4, s5, s6, s7, s8, s9):
    return [s1,s2,s3,s4,s5,s6,s7,s8,s9]

def print_spots( spots ):
    s1,s2,s3,s4,s5,s6,s7,s8,s9 = spots

    print('\n')
    print(str(s1) + ' | ' + str(s2) + ' | ' + str(s3))
    print('--+---+--')
    print(str(s4) + ' | ' + str(s5) + ' | ' + str(s6))
    print('--+---+--')
    print(str(s7) + ' | ' + str(s8) + ' | ' + str(s9))

def game_loop():

    spots = set_spots(1,2,3,4,5,6,7,8,9)
    print_spots(spots )

game_loop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...