С прошлого года постепенно осваиваю Python 3. Хотелось бы поучаствовать в качестве волонтера (то есть бесплатно) в небольших проектах малой или средней сложности, не всё же тренировочные задачки решать. Похвастаться знанием других актуальных языков программирования, к сожалению, пока не могу, да и опыта практической работы в каких-либо предметных областях у меня пока нет.
Если кому-то интересно, готов предоставить ссылки на образцы своего кода, выложенные на всеобщее обозрение на одном англоязычном программистском сайте, где также есть формулировка задачи, так что контекста будет предостаточно.
Буду рад любым советам. Если задал неуместный вопрос, прошу извинить.
L>С прошлого года постепенно осваиваю Python 3. L>Мне бы для начала с одним языком разобраться.
С прошлого года прошло уже почти полгода. Азы языка программирования (любого) учатся за неделю. А дальнейший опыт получается только в серьезной коммерческой разработке (на полную ставку и за бабки).
Re[2]: Кому-нибудь требуется начинающий питонист в подмастерья?
Здравствуйте, Lazytech, Вы писали:
Z>>можно свой проект пилить, не обязательно лезть в чужой. придумай себе задачу и делай ее. L>Я пока слабо себе представляю, как это делается...
Захотелось вот мне погодную станцию слабать на коленке — микроконтроллер esp8266 с микропитоном и сенсор dht22 и вперед. Или вот задолбали скрипты bash — перенес свои рабочие скрипты на питон, красота. Неужели скрипты ни для чего нужны?
Re[4]: Кому-нибудь требуется начинающий питонист в подмастер
Здравствуйте, L.K., Вы писали:
LK>С прошлого года прошло уже почти полгода. Азы языка программирования (любого) учатся за неделю. А дальнейший опыт получается только в серьезной коммерческой разработке (на полную ставку и за бабки).
Увы, в моем случае процесс освоения языка программирования идет не медленно, а очень медленно и временами почти болезненно (не зря же придумали выражение «голова пухнет»). Я даже не представляю себе, как, не имея серьезного опыта программирования, можно быстро освоить азы какого-либо языка. Что касается серьезной коммерческой разработки, кто же меня туда возьмет, без опыта-то...
Здравствуйте, aik, Вы писали: aik>Захотелось вот мне погодную станцию слабать на коленке — микроконтроллер esp8266 с микропитоном и сенсор dht22 и вперед. Или вот задолбали скрипты bash — перенес свои рабочие скрипты на питон, красота. Неужели скрипты ни для чего нужны?
Только теперь до меня дошло, о чем идет речь! Скриптов, как мне кажется, будет недостаточно для набора опыта. Я еще несколько лет назад делал скриптики для планировщика nnCron на языке SP-Forth, а задолго до того — макросы для MS Excel, но программистом от этого не стал...
P.S. Поясню, что имею в виду, на примере кода (см. под катом).
2 образца кода...
Код до переделки:
class Solution:
def numMagicSquaresInside(self, grid: List[List[int]]) -> int:
def isMagicSquare(r0, c0):
row_sums, col_sums, diag_sums = [0, 0, 0], [0, 0, 0], [0, 0]
uniques = set()
for r in range(r0, r0+3):
for c in range(c0, c0+3):
cell = grid[r][c]
if not (1 <= cell <= 9):
return False
else:
uniques.add(cell)
if len(uniques) < c - c0 + r - r0 + 1:
return False
else:
row_sums[r-r0] += cell
col_sums[c-c0] += cell
if r - r0 > 1 and row_sums[r-r0] != row_sums[r-r0-1]:
return False
diag_sums[0] += grid[r][c0+r-r0]
diag_sums[1] += grid[r][c0+r0+2-r]
if len(uniques) < 9:
return False
for c in range(2):
if col_sums[c] != col_sums[c+1]:
return False
return diag_sums[0] == diag_sums[1] == row_sums[0] == col_sums[0]
n, m = len(grid), len(grid[0])
magic_squares = 0
for r in range(n-2):
for c in range(m-2):
if isMagicSquare(r, c):
magic_squares += 1
return magic_squares
Код после переделки:
class Solution:
def numMagicSquaresInside(self, grid: List[List[int]]) -> int:
def isMagic(r0, c0):
row_sums, col_sums, diag_sums = [0, 0, 0], [0, 0, 0], [0, 0]
uniques = set()
for r in range(r0, r0+3):
c_last = c0 + 2
for c in range(c0, c0+3):
cell = grid[r][c]
uniques.add(cell)
row_sums[r-r0] += cell
col_sums[c-c0] += cell
r_pos = r - r0
if r_pos > 1 and row_sums[r_pos] != row_sums[r_pos-1]:
return False
diag_sums[0] += grid[r][c0+r_pos]
diag_sums[1] += grid[r][c_last-r_pos]
if len(uniques) < 9:
return False
for c in range(2):
if col_sums[c] != col_sums[c+1]:
return False
return diag_sums[0] == diag_sums[1] == row_sums[0] == col_sums[0]
n, m = len(grid), len(grid[0])
magic_squares = 0
bad_cells = {(r, c) for c in range(m) for r in range(n)
if not (1 <= grid[r][c] <= 9)}
for r in range(n-2):
for c in range(m-2):
# based on research by lee215
# https://leetcode.com/problems/magic-squares-in-grid/discuss/133874/Python-5-and-43816729
# "The center of magic square must be 5." if grid[r+1][c+1] == 5:
r_end, c_end = r + 2, c + 2
all_good = True
for r1, c1 in bad_cells:
if r <= r1 <= r_end and c <= c1 <= c_end:
all_good = False
break
if all_good and isMagic(r, c):
magic_squares += 1
return magic_squares
Если верить сайту, где я решал эту самую задачку, переделка кода сократила время его выполнения с 44 мс до 36 мс. Я ожидал большего, но хоть что-то...
Здравствуйте, Lazytech, Вы писали:
Z>>можно свой проект пилить, не обязательно лезть в чужой. придумай себе задачу и делай ее.
L>Я пока слабо себе представляю, как это делается...
Ты же переводчик. Придумай программу, которая тебе поможет. GUI на пайтоне пишется с помощью PyQt и работает на любой операционной системе. Вот и напиши, и тебе полезно будет и практических навыков получишь выше крыши и есть шанс, что полезная программа выйдет, т.к. ты профессионал и лучше остальных знаешь, что важно, а что не очень. Тем более с английским у тебя точно проблем нет, поэтому с любым вопросом мучай Google и StackOverflow, всё должно получиться.
Re[4]: Кому-нибудь требуется начинающий питонист в подмастерья?
Здравствуйте, vsb, Вы писали:
vsb>Ты же переводчик. Придумай программу, которая тебе поможет. GUI на пайтоне пишется с помощью PyQt и работает на любой операционной системе. Вот и напиши, и тебе полезно будет и практических навыков получишь выше крыши и есть шанс, что полезная программа выйдет, т.к. ты профессионал и лучше остальных знаешь, что важно, а что не очень. Тем более с английским у тебя точно проблем нет, поэтому с любым вопросом мучай Google и StackOverflow, всё должно получиться.
Спасибо за интересный совет! Если бы всё было так просто... Меня пока интересует приобретение какого-то опыта в качестве простого кодера, не более того.
Re[5]: Кому-нибудь требуется начинающий питонист в подмастер
Здравствуйте, Lazytech, Вы писали:
L>Увы, в моем случае процесс освоения языка программирования идет не медленно, а очень медленно и временами почти болезненно (не зря же придумали выражение «голова пухнет»). Я даже не представляю себе, как, не имея серьезного опыта программирования, можно быстро освоить азы какого-либо языка. Что касается серьезной коммерческой разработки, кто же меня туда возьмет, без опыта-то...
Друг в 40 лет рванул из айти директора в явапрограммера. Месяца три-четыре тренировался на кошках, потом джуном полгода, а через год где то был вполне вменяемый офер от сбертеха. Но у него прям глаза горели, так айтишничество достало, недостаток опыта вполне компенсируется энтузиазмом и мозгами.
Re[6]: Кому-нибудь требуется начинающий питонист в подмастер
Здравствуйте, aik, Вы писали:
aik>Друг в 40 лет рванул из айти директора в явапрограммера. Месяца три-четыре тренировался на кошках, потом джуном полгода, а через год где то был вполне вменяемый офер от сбертеха. Но у него прям глаза горели, так айтишничество достало, недостаток опыта вполне компенсируется энтузиазмом и мозгами.
К сожалению, это не совсем мой случай. Я-то в айти никогда не работал, да и мозгами, заточенными под программирование, похвастаться не могу...
Re[5]: Кому-нибудь требуется начинающий питонист в подмастер
Вот этого я не понял. Зачем переводчику лезть в кодописание? Занимайся своим делом и зарабатывай бабло. Или спрос на переводы резко упал?
Но если охота покодить, можно сделать переводческую библиотеку. Чтобы её можно было подцепить к программе или вебсайту. Хотя, подозреваю, что такое уже есть. Но можно найти там косяки и сделать лучше.
Еще можно закодить сайтик по изучению языков. Такое тоже уже есть, но тоже можно сделать лучше.
А само кодописание — это переменные, объекты, функции, параметры, условные операторы и циклы. Ничего сложного.
Re[3]: Кому-нибудь требуется начинающий питонист в подмастерья?
Здравствуйте, Lazytech, Вы писали:
L>Здравствуйте, zverjuga, Вы писали:
Z>>можно свой проект пилить, не обязательно лезть в чужой. придумай себе задачу и делай ее.
L>Я пока слабо себе представляю, как это делается...
как ни странно, но это даже и к лучшему. если ты самостоятельно разберешься с этим, то получишь к опыту еще +100 очков, чем если тебя посадят на уже готовый проект.
проклятый антисутенерский закон
Re[6]: Кому-нибудь требуется начинающий питонист в подмастер
Здравствуйте, L.K., Вы писали:
LK>Вот этого я не понял. Зачем переводчику лезть в кодописание? Занимайся своим делом и зарабатывай бабло. Или спрос на переводы резко упал?
Да, во втором полугодии прошлого года у меня практически не стало заказов. В очередной раз — спрос на мои услуги и до того не раз и не два падал ниже плинтуса, причем такой период мог продолжаться по несколько месяцев. По сути, мне снова стало нечего ловить (хотя до этого я тоже особо не жировал), вот я и призадумался о своем унылом настоящем и еще более невеселом будущем.
LK>Но если охота покодить, можно сделать переводческую библиотеку. Чтобы её можно было подцепить к программе или вебсайту. Хотя, подозреваю, что такое уже есть. Но можно найти там косяки и сделать лучше. LK>Еще можно закодить сайтик по изучению языков. Такое тоже уже есть, но тоже можно сделать лучше.
Боюсь, что я пока не готов самостоятельно пилить проекты, пусть даже относительно простые.
LK>А само кодописание — это переменные, объекты, функции, параметры, условные операторы и циклы. Ничего сложного.
Это смотря для кого ничего сложного...
Re[4]: Кому-нибудь требуется начинающий питонист в подмастер
Здравствуйте, zverjuga, Вы писали:
Z>как ни странно, но это даже и к лучшему. если ты самостоятельно разберешься с этим, то получишь к опыту еще +100 очков, чем если тебя посадят на уже готовый проект.
Всё это очень здорово, но мне даже теоретические задачки зачастую даются непросто (иные решаю по 2-3 дня, а некоторые так и оставляю нерешенными), чего уж там говорить о практике...