Я пытаюсь выучить Python уже пару месяцев. Я выполнял практические упражнения на edabit.com и постоянно выполнял «сложные» и «очень сложные» задачи. Я решил, что попробую «Эксперт», просто чтобы посмотреть, во что я ввяжусь. Мне была поставлена задача создать квадратную «мишень» из списка целых чисел, указав только длину.
Здесь можно найти упражнение: https://edabit.com/challenge/Kv8DMmwfuKTLyZD5E
Результат должен выглядеть так:
make_dartboard(8) ➞ [
11111111,
12222221,
12333321,
12344321,
12344321,
12333321,
12222221,
11111111
]
Как и ожидалось, я был действительно в тупике. Рассматривая это как учебное упражнение, я просмотрел решения других пользователей и натолкнулся на следующий код:
Вопрос:
def make_dartboard(n):
row, top = 0, []
for i in range(n, 0, -2):
row += int('{:0^{}}'.format('1'*i, n))
top.append(row)
bottom = top[::-1][1:] if n%2 else top[::-1]
return top + bottom
I ' Я просматривал это больше часа, но не могу понять, КАК этот код работает. Я признаю, что существует бесчисленное количество Python концепций, функций и синтаксиса, которые я до сих пор не понимаю, но я действительно хочу (например, .format () по-прежнему является для меня совершенно новой функцией и все еще не Я полностью понимаю это).
Не мог бы кто-нибудь так любезно рассказать, что именно происходит в этом коде? Что действительно сбивает меня с толку, так это строки 4 и 6.
Я ценю любое время, которое вы готовы дать мне, и благодарен, что вы даже нашли время, чтобы прочитать это.
* Я хочу поблагодарить пользователей edabit Джошуа Сеньорон и zatoichi49 за создание и решение проблемы соответственно.