Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/75: Рейтинг темы: голосов - 75, средняя оценка - 4.85
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678

Крестики-нолики

13.01.2021, 19:06. Показов 16715. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию tic_tac_toe(field), которая принимает на вход список списков 3х3 — поле игры в крестики-нолики.

На этом поле отражен игровой момент: незанятой (пустой) клетке соответствует '-', крестикам и ноликам соответственно 'x' и '0'.

Ваша функция должна попытаться определить, есть ли победитель в данном игровом моменте и вывести фразу x win, если победили «крестики» или 0 win, если победили «нолики».

В случае, когда однозначно определить победителя не представляется возможным необходимо вывести слово draw.

Пример
Ввод

data = """0 - 0
x x x
0 0 -"""

field = [line.split() for line in data.split('\n')]
tic_tac_toe(field)
Вывод
x win
Примечания
Игровая ситуация задается корректно, то есть расположений, для которых существует несколько исходов, например, такого:

0 0 0
x x x
- - -

быть не может.


Python
1
2
3
4
5
6
7
8
9
10
11
def tic_tac_toe(field):
    flag = 'False'
    for i in field:
        if ''.join(i) == 'xxx': 
            print('x win')
            flag = 'True'
        elif ''.join(i) == '000': 
            print('0 win')
            flag = 'True'
    if flag == 'False': 
        print('draw')
выше тест который - проходит, а второй уже нет
Ввод
data = """0 - x
- 0 -
x x 0"""

field = [line.split() for line in data.split('\n')]
tic_tac_toe(field)
Ожидаемый результат
0 win
Вывод
draw
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2021, 19:06
Ответы с готовыми решениями:

Крестики-нолики
Напишите класс TicTacToeBoard для игры в крестики-нолики, который должен иметь следующие методы: new_game() – для создания новой игры;...

Крестики-нолики
Мне надо сделать игру крестики-нолики, как бы... игра простая, в интернете бесконечное количество вариантов, но есть один нюанс: поле...

Крестики-нолики
Напишите функцию Tic_tac_toe(field), которая принимает на вход список списков 3х3 - поле игры в крестики-нолики. Незанятой (пустой) клетке...

26
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:15
Цитата Сообщение от Ychenyi Посмотреть сообщение
flag = 'False'
а чем родной булиновский False не устроил?

где логика для диагоналей (подсказка -их всего 2)?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:39
Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
In [1]: def tic_tac_toe(field):
    ...:     lines = *map("".join, field), *map("".join, zip(*field)), *map("".join, zip(*((row[index], row[-index - 1],) for index, row in enumerate(field))))
    ...:     winner = "x win" if "xxx" in lines else "0 win" if "000" in lines else "draw"
    ...:     print(winner)
    ...:
 
In [2]: data = """0 - 0
    ...: x x x
    ...: 0 0 -"""
    ...:
    ...: field = [line.split() for line in data.split('\n')]
    ...: tic_tac_toe(field)
x win
 
In [3]: data = """0 - x
    ...: - 0 -
    ...: x x 0"""
    ...:
    ...: field = [line.split() for line in data.split('\n')]
    ...: tic_tac_toe(field)
0 win
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:47  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
а чем родной булиновский False не устроил?
привык уже так, обучают к тому же именно так
Цитата Сообщение от Welemir1 Посмотреть сообщение
где логика для диагоналей (подсказка -их всего 2)?
как видите нету
думаю по диагоналям не нужно
просто было задание тоже крестики нолики и там вроде диагонали не нужно было

Добавлено через 3 минуты
Arsegg, пишет что строка lines слишком длинная
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:47
Цитата Сообщение от Ychenyi Посмотреть сообщение
обучают к тому же именно так
беги оттуда

Цитата Сообщение от Ychenyi Посмотреть сообщение
думаю по диагоналям не нужно
как не нужно если второй тест именно диагональ?
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:50  [ТС]
Welemir1, точно, даже ведь и не заметил

Добавлено через 14 секунд
Цитата Сообщение от Welemir1 Посмотреть сообщение
беги оттуда
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:54
Цитата Сообщение от Ychenyi Посмотреть сообщение
пишет что строка lines слишком длинная
Укороти
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:55
Ychenyi, я бы на твоем месте не смеялся... есть скрин или ссылка, где учат использовать строковые флаги? а то чет это дно даже для Яндекс.Шараги, не верю...
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:57  [ТС]
Welemir1, так на уроке говорят так именно писать
отдельных уроков по флагам тут нет
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:58
Ychenyi, ты значит неверно понял, там про булины рассказывали, а ты проспал, как и диагональ в задаче
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:58
Цитата Сообщение от Ychenyi Посмотреть сообщение
так на уроке говорят так именно писать
Быть такого не может. Пруфы в студию! Или в ЛС.
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:02  [ТС]
Welemir1, Arsegg, нет, там учитель объяснял именно так писать
Цитата Сообщение от Arsegg Посмотреть сообщение
Быть такого не может. Пруфы в студию! Или в ЛС.
может, а какие пруфы то? я уроки же не записываю на камеру
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 20:05
Ychenyi, учитель то прям спец, а не выпусник той же шараги прошлого года? тоже бы пруфов посмотрел, или не было
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:07  [ТС]
Welemir1, учитель, который преподает просто работает в школе учителем информатики

Добавлено через 19 секунд
Цитата Сообщение от Welemir1 Посмотреть сообщение
шараги прошлого года?

Не по теме:

ахахахаха нее

0
13.01.2021, 20:07

Не по теме:

Цитата Сообщение от Ychenyi Посмотреть сообщение
я уроки же не записываю на камеру
Юзай OBS, поржем хоть :D

0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:20  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
тоже бы пруфов посмотрел, или не было
в след. раз обязательно запишу на видео для Welemir1, Arsegg,

Добавлено через 10 минут
Arsegg,
Цитата Сообщение от Arsegg Посмотреть сообщение
Укороти
пытаюсь слешами перенести , но ничерта не работает

Добавлено через 2 минуты
щас еще попытаюсь, пока что не помогайте
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 20:21
Цитата Сообщение от Ychenyi Посмотреть сообщение
пытаюсь слешами перенести , но ничерта не работает
Положи в скобки и раздели на несколько строк до запятой. Кортеж же.
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:33  [ТС]
Python
1
2
3
4
lines = *map("".join, field), \
        *map("".join, zip(*field)), \
        *map("".join, zip(*((row[index], row[-index - 1],)
            for index, row in enumerate(field))))
пытаюсь так
но единственная ошибка
./solution.py:5:13: E128 continuation line under-indented for visual indent
это в строке с циклом for

Добавлено через 1 минуту
Цитата Сообщение от Arsegg Посмотреть сообщение
Положи в скобки и раздели на несколько строк до запятой
тоже не работает

Добавлено через 5 минут
все сделал
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 20:36
Цитата Сообщение от Ychenyi Посмотреть сообщение
тоже не работает
Python
1
2
3
4
In [1]: lines = (*map("".join, field),
    ...:         *map("".join, zip(*field)),
    ...:         *map("".join, zip(*((row[index], row[-index - 1],) for index, row in enumerate(field)))),
    ...:         )
...
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.01.2021, 20:48
Цитата Сообщение от Arsegg Посмотреть сообщение
Или в ЛС.
.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2021, 20:48
Помогаю со студенческими работами здесь

Крестики - нолики
Есть готовый код, дали задание разобрать логику кода, шаг за шагом... что-то у меня всё запуталось в голове, может кто-то поможет...

Нолики-крестики
Напишите программу, которая определяет, кто выиграл в крестики-нолики на увеличенном квадратном поле, выстроив подряд по горизонтали или по...

Крестики-нолики
Напишите функцию tic_tac_toe(field), которая принимает на вход список списков 3х3 — поле игры в крестики-нолики. На этом поле отражен...

Крестики-нолики
Два игрока играют в крестики-нолики. Напишите программу, которая после каждого хода игрока проверяет поле и, если игра завершилась, выводит...

Крестики-нолики
Пишу крестики нолики, этот кусок кода отвечает за считывание матрицы и проверку на победителя, вот в чем заключается проблема: Не понимаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru