170 похожих чатов

Добрый день. Прохожу курс сейчас, задание написать крестики-нолики. Код рабочий,

но можете оценить качество самого кода? Некоторые моменты сделаны обусловлены тем, что задача состояла в том, чтобы делать именно так (к примеру использовать кортеж, а не список).

https://dpaste.org/yiZx

Всем спасибо ✌️

37 ответов

15 просмотров

сходу можешь идти читать PEP8

ох реально, обрати внимание на PEP8. Код очень тяжело читать. + добавляй комменты, если хочешь, чтобы кто-то проверял)

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
ох реально, обрати внимание на PEP8. Код очень тяж...

Это из-за отступов? Я знаю что иде ругался бы на одинарные отступы между. А mixedCase использовал чтобы не использовать стиль с нижним подчеркиванием как в курсе. Отступа в конце нет, насколько я понимаю. Но дело не только в этом?)

Vladyslav
Это из-за отступов? Я знаю что иде ругался бы на о...

> А mixedCase использовал чтобы не использовать стиль с нижним подчеркиванием как в курсе так вот в питоне принят snake_case стиль.

ну и из того, что я вижу, то у тебя функции делают что-то странное. Например это должно просто отображать доску (по названию), но при этом, она почему-то меняет значения в доске

Vladyslav
Это из-за отступов? Я знаю что иде ругался бы на о...

во вторых тут лучше подойдет ООП. Ты в принципе похожий концепт и реализовал, но ООП лучше)

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
screenshot ну и из того, что я вижу, то у тебя функции делают...

Хм, в целом можно вынести за пределы функции, в цикл. Или сразу формировать такой лист) Спасибо

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
во вторых тут лучше подойдет ООП. Ты в принципе по...

Мне ООП в целом больше нравится. Но модуль посвящён функциям)

if i ==0 Т.е. просто можно было сделать до цикла фор Кстати чойто у тебя рамки фиксированные??

Vladyslav
Хм, в целом можно вынести за пределы функции, в ци...

смотри, функция должна делать определенное действие. Если у тебя есть функция "вывести доску", то она должна только выводить доску.

Vladyslav
Хм, в целом можно вынести за пределы функции, в ци...

вот эта функция. Насколько я помню в крестике нолики тебе надо ввести ячейку и крестик/нолик. У тебя функция прости ввести число от 1 до 9, что делает очень сложным понимание того, где находится ячейка

Владимир
if i ==0 Т.е. просто можно было сделать до цикла ...

ну и вот хард инпут побед очень не нравится. Напиши просто скрипт, который чекает сумму по диагоналям/строкам/столбцам. И если сумма равна -3 или +3, то тогда выигрывает крестик или нолик

Vladyslav- Автор вопроса
Владимир
if i ==0 Т.е. просто можно было сделать до цикла ...

Не понял по поводу рамок) А насчёт до цикла, согласен...

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
screenshot вот эта функция. Насколько я помню в крестике ноли...

Человек нолик по умолчанию. И всегда ходит вторым, это, кстати, условие задания)

Vladyslav
Человек нолик по умолчанию. И всегда ходит вторым,...

окей, тогда почему крестик всегда по центру?))

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
окей, тогда почему крестик всегда по центру?))

Условие задания) Наверное, было бы логично, сразу и условие скинуть, чтобы лишние вопросы по логике отпали

Vladyslav
Условие задания) Наверное, было бы логично, сразу...

в любом случае, лучше поменяй систему ввода с 1-9, на x/y иначе если масштабировать игру (например 5*5 или 10*10), будет неудобный ввод)) в целом, если всё работает - значит ок)

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
screenshot ну и вот хард инпут побед очень не нравится. Напиш...

Согласен, но не мог на скорую руку придумать алгоритм ) Спасибо 👍

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
в любом случае, лучше поменяй систему ввода с 1-9,...

Мне кажется мой код не очень подходит для масштабирования, хотя частично старался не использовать фиксированные числа. Но тот же алгоритм вычисления побед абсолютно не динамичный В целом, я свои ошибки понял, спасибо) По поводу того что лишнее в функции пихаю, и почитать пеп 8 Остальное уже мелочи)

Vladyslav
Согласен, но не мог на скорую руку придумать алгор...

вот это заменяется на import numpy as np board = np.empty([3,3])

Vladyslav
Мне кажется мой код не очень подходит для масштаби...

лучший совет, который мне давали - перед тем как что-то делать, погугли 5-7 ссылок, как это делают другие люди))

Vladyslav
Мне кажется мой код не очень подходит для масштаби...

у тебя есть много вещей, которые можно упростить)

Vladyslav- Автор вопроса
Volodymyr Viedienieiev
у тебя есть много вещей, которые можно упростить)

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

Vladyslav
Но для обучения, наверное, импортировать что-то не...

хмммм, я сторонник той мысли, что если ты можешь сделать что-то более продвинутым, но практичным методом, то лучше так и делать :)

Volodymyr Viedienieiev
почему нет?)

Ну нееее зачем тут нумпай... тем более человек учится. Зачем ему сейчас это?

Владимир
Ну нееее зачем тут нумпай... тем более человек учи...

ну а прикинь игру масштабировать на доску 100 на 100. Нафига двойной цикл?) если 3 на 3, то ок)

Volodymyr Viedienieiev
ну а прикинь игру масштабировать на доску 100 на 1...

Ну я больше к тому что нумпай для решения даже толком оптимизаций не даст (та же итерация и будет)

Владимир
Ну я больше к тому что нумпай для решения даже тол...

import numpy as np import time now_1 = time.time() board_1 = np.zeros([10000,10000]) end_1 = time.time() now_2 = time.time() board_2 = [] for j in range(10000): board_2.append([]) for i in range(10000): board_2[j].append([]) end_2 = time.time() print(f"numpy: {end_1-now_1}") print(f"for loop: {end_2-now_2}") зацени

Владимир
Ну я больше к тому что нумпай для решения даже тол...

np.zeroes выполняется мгновенно, фор луп не выполняется у меня вообще

Volodymyr Viedienieiev
import numpy as np import time now_1 = time.time(...

Но игровая логика то будет через итерацию, там не будет (по крайней мере я не вижу таких вариантов) операций с матрицами чтобы понять, кто выиграл, возможен ли ход

Volodymyr Viedienieiev
np.zeroes выполняется мгновенно, фор луп не выполн...

Да тут не спорю создать нумпай массив гораздо быстрее (но вряд ли это лимитирует)

Volodymyr Viedienieiev
np.zeroes выполняется мгновенно, фор луп не выполн...

то есть притащить лишнюю зависимость ради оптимизации того чего никто не просил оптимизировать, а именно времени инициализации.

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

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта