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

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

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

https://dpaste.org/yiZx

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

37 ответов

16 просмотров

сходу можешь идти читать 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 выполняется мгновенно, фор луп не выполн...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта