Я думаю, что вы написали условие вашего цикла неправильно.В настоящее время требуется, чтобы none из строк, столбцов или диагоналей суммировалось до нужного значения.Если какой-либо из них это сделает, он завершает работу, поскольку цепочка and
s приводит к значению False
.
Вместо этого, я думаю, вы хотите использовать оператор or
вместо оператора and
,Таким образом, вы продолжали бы цикл до тех пор, пока любое из условий было истинным (то есть любая строка не суммировалась правильно).
Или, альтернативно, вы могли бы сохранить and
операторов, но измените операторы !=
на ==
и отмените все в конце (поскольку not X or not Y
логически эквивалентно not (X and Y)
):
while not (s[0] + s[1] + s[2] == 15 and s[3] + s[4] + s[5] == 15 and
s[6] + s[7] + s[8] == 15 and s[0] + s[4] + s[8] == 15 and
s[2] + s[4] + s[6] == 15 and s[0] + s[3] + s[6] == 15 and
s[1] + s[4] + s[7] == 15 and s[2] + s[5] + s[8] == 15):