Я видел, что обычно ошибка возникает, когда вы используете в течение некоторого времени l oop, однако здесь это не так, поэтому я прошу помощи с этой "распространенной" ошибкой
Следующая часть кода не важна, вероятно, вы можете просто проигнорировать ее
crd = ['1 3', '2 3', '3 3', '1 2', '2 2', '3 2', '1 1', '2 1', '3 1']
inp = list(input('Enter cells:'))
wins = 0
result = False
def field(val):
print('---------')
for i in range(0, 9, 3):
print('| ' + '{} {} {}'.format(val[i], val[i+1], val[i+2]).replace('_', ' ') + ' |')
print('---------')
def win(con):
global wins
global result
if inp[0] == '_':
result = 'Impossible'
else:
win_con = [[con[i], con[i+1], con[i+2]] for i in range(0, 9, 3)] \
+ [[con[i], con[i+3], con[i+6]] for i in range(0, 3, 1)]\
+ [[con[0], con[4], con[8]], [con[2], con[4], con[6]]]
for i in win_con:
if (set(i) == {'X'} or set(i) == {'O'}) and wins == 1:
result = 'Impossible'
elif set(i) == {'X'}:
result = 'X wins'
wins = 1
elif set(i) == {'O'}:
result = 'O wins'
wins = 1
if result == False:
try:
inp.index('_')
result = 'Game not finished'
except:
result = 'Draw'
print(result)
field(inp)
Сильфон - это часть кода с al oop, которая возвращает ошибку бесконечного цикла (насколько я понял ошибка в def move () part
def move():
move = input('Enter the coordinates:').split(' ')
while True:
for n in move:
if int(n) not in range(1, 4):
print('Coordinates should be from 1 to 3!')
move = input('Enter the coordinates:').split(' ')
continue
elif int(n) in range(1, 4):
move = ' '.join(move)
break
while True:
move()
position = [p for p, x in enumerate(crd) if x == move]
int_pos = int("".join([str(p) for p in position]))
if inp[int_pos] == '0' or inp[int_pos] == 'X':
print('This cell is occupied! Choose another one!')
move()
elif inp[int_pos] == '_':
inp[int_pos] = 'X'
field(inp)
win(inp)
if result:
break
Каким-то образом, однажды мне даже удалось исправить ошибку бесконечного l oop, тем не менее, возникла другая проблема - после проверки первой пары координат (и показа того, что они находятся за пределами диапазона) потребовался ввод для новой пары координат, но все же продолжилась проверка старой пары координат, которая уже была проверена.