CoolPython
4.6K subscribers
20 photos
44 links
Канал об основах Python и хороших практиках разработки. Создаём системность в обрывочных знаниях.

Тем, кто хочет понимать, что пишет!
Download Telegram
Грусти пост о формулах в коде

Подсмотрела, как коллеги, которые пишут на C++, оформляют формулы. Здесь закомментировали черту и разбили ей формулу геометрической прогрессии на числитель и знаменатель. Получилась очень читаемо, а еще функция документирует себя сама!
 
//Sum of first n terms of a geometric series.
// S = a + ar + ar^2 + ... + ar^n

float geom_sum(int n, float a, float r)
{
return
(a*(1 - pow(r, n + 1)))
/ //-----------------------
(1 - r);
}


Мне этот стиль очень нравится, но жаль, что интерпретатор так не позволяет писать в исполняемом коде. По крайней мере, у меня не получилось сделать, чтобы похожее форматирование заработало. Поэтому в теле функции я обычно пишу числитель и знаменатель отдельно, чтобы не было очень длинно, а выражение в docstring'е оформляю именно так. На Python получается что-то вроде:
 
def geom_sum(n, a, r):
"""
Sum of first n terms of a geometric series.
S = a + ar + ar^2 + ... + ar^n

1 - pow(r, n + 1)
S = a -----------------
1 - r

:param n: Number of terms
:param a: First term
:param r: Common ratio, r < 1
:return: Sum of series
"""

num = a*(1 - pow(r, n + 1))
denom = 1 - r
return num/denom


Не стала обрабатывать случай расхождения ряда, я сейчас не об этом. А так хорошо бы. Такие дела! 🐠

#кодстайл #докстринг #формулы #комментарии #вообще_другой_язык #cpp
👍1