Виктор обнови решението на 01.11.2022 08:39 (преди над 2 години)
Името на функцията може да е по-добро. "helper" частта показва, че функцията се използва в nums_to_text
. Но ако не прочета тази функция, а само мина през кода на nums_to_text
, няма да имам никаква идея когато видя извикването по-долу:
result += helper_nums_to_text(prev_num, counter)
Какво прави функцията? Създава мапинг между число и буква (символ). Превежда число към символ. Определя какъв символ отговаря на числото спрямо това, колко пъти е въведено то. Все можеш да измилиш нещо, което да не кара читателя да търси имплементацията, когато види извикването, защото не знае какво точно прави функцията.
result
е информативно дотолкова, доколкото ти дава информация, че това ще е нещото, което ще върнеш накрая. Това обаче става ясно и от return-а. Име от сорта на char(acter)
би било по-описателно.
Това е прост код, очевидно е, не е проблем, но за в бъдеще го имай предвид.
result += <нещо>
в твоят случай на практика е същото като result = <нещо>
.
Във функцията няма итерация, така че result винаги ще е 1 символ. На практика би трябвало да можеш да махнеш и result = ""
и пак да работи... Почти, ще трябва да сложиш един case за единицата, която би била result = ""
.
Определено не-критична забележка, но създава малко грешното впечатление, че result може да бъде нещо различно от празен низ или 1 буква (вкл. интервал).
Числа се сравняват с ==
, не с is
. Case in point:
x = 5
>>> y = 5
>>> x == y
True
>>> x is y
True
# Обаче!
>>> a = 3**20
>>> b = 3**20
>>> a == b
True
>>> a is b
False
В случая няма да имаш проблеми... Но само в случая, и разчита на оптимизация в Python. :)
list_chars
не е нито списък, нито съдържа символи. :D
l е лошо име и, в зависимост от шрифта, много прилича на цифрата 1. Виж по-надолу:
counter = ord(letter) - l
Малко Python идиоматика (просто като reference):
result += [number] * counter
Да, можеш да умножаваш списък с число. :)
return nums_to_angle(text_to_nums(word)) % len(word) == 0
е за предпочитане.
Навсякъде имаш спейсове преди двуеточията, което не е PEP8-compliant.
Ах, не очаквах толкова забележки :D. Благодаря за труда да ми върнеш обратна връзка! Без нея някои от грешките със сигурност щях да ги повтарям и нямаше да ми правят впечатление. За в бъдеще ще следя за тях.