@Azamgl

Как по-человечески найти нужный элемент в списке?

import random

a1,a2,a3,b1,b2,b3,c1,c2,c3 = ' ',' ',' ',' ', ' ',' ',' ',' ',' '
search=[a1,a2,a3,b1,b2,b3,c1,c2,c3]

def Board():
    print(a3 + '|' + b3 + '|' + c3)
    print('-+-+-')
    print(a2 + '|' + b2 + '|' + c2)
    print('-+-+-')
    print(a1 + '|' + b1 + '|' + c1)
    print('-+-+-')

#кто ходит первым
if random.randint(1,2)== 1:
    print('Крестики в этом раунде у первого игрока.')
else:
    print('Крестики в этом раунде у второго игрока.')

m1 = input('Введите поле, куда вы ставите свой знак: ')


В моей игре крестики нолики каждой ячейке я присвоил пробел. Однако когда собственно игроку надо выбрать куда поставить крестик или нолик он выбирает ячейку по ее номеру и когда и когда я делаю что-то по типу search.index('a1') конечно же это неверно ведь a1=' '. Как нужно найти этот элемент и поменять его пробел на х. Чувствую, что ответ будет супееер легкий, но божеее я не могу его найти.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ты хочешь указывать ячейку как в морском бое, а1-в3?
Тогда работай отдельно по строкам и столбцам, так будет проще.
field = [
  [' ', ' ', ' '],
  [' ', ' ', ' '],
  [' ', ' ', ' '],
]
#обращение к ячейке будет таким: field[1][1] 

columns = ['1', '2', '3'] #обозначения столбцов
rows = ['a', 'b', 'c'] #обозначения строк

def cell2index(cell):
  # превращаем строку вида b1 в индексы в списке
  row = rows.index(cell[0].lower()) #если номера строки нет, вылетит исключение ValueError
  col = columns.index(cell[1]) #если номера столбца нет, вылетит исключение ValueError
  return row, col #возвращаем кортеж - пару значений

# пример работы - ход крестиков
while True: #повторяем, пока пользователь не введет правильный номер
  cell = input('Введите ячейку для хода: ')
  try:
    r, c = cell2index(cell) #если номер неверный, тут вылетит исключение ValueError
    if field[r][c] != ' ': #ячейка уже занята?
      print('Ячейка уже занята!')
    else:
      break #если исключения не было, выходим из цикла
  except ValueError:
    print('Номер ячейки неправильный')
#сюда попадём только если номер ячейки правильный и она свободна
field[r][c] = 'x'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы