↓
 ↑
Регистрация
Имя/email

Пароль

 
Вход при помощи VK ID
временно не работает,
как войти читайте здесь!
ArtChaos Онлайн
28 сентября 2019
Aa Aa
Никак не могу понять, как это гуглить, поэтому спрошу тут:
Как лучше писать код: с лишней переменной, куда единоразово сведём расчёты или каждый раз фигачить расчёты?

Пример:
a = int(input())
b = int(input())
c = int(input())

d = a // 2
e = a % 2
f = b // 2
g = b % 2
h = c // 2
i = c % 2

print(d + e + f + g + h + i)
или
a = int(input())
b = int(input())
c = int(input())

print(((a // 2) + (a % 2)) + ((b // 2) + (b % 2)) + ((c // 2) + (c % 2)))
Понятно, что в таких учебных программах не важна загрузка сервера лишними вычислениями, но меня, скажем так, интересует философия написания кода. А в дзене Питона такого нет, я не знаю, что проще из двух вариантов.

В первом дофига переменных, что выглядит глупо для маленьких программ.
Но второй вариант выглядит глупо уже для больших программ, где такие скобки с мнимыми переменными могут сильно затруднить читабельность кода и зарузить сервер вычислениями.

#ламмерское #IT #проггерское
28 сентября 2019
9 комментариев из 24
Lucia Malfoy
>интересует философия написания кода
пиши читаемый и расширяемый код, изи
Lucia Malfoy
если кажется, что всё плохо, юзай профайлер
ArtChaos Онлайн
Lucia Malfoy
в примерах-то да, но если во втором примере придётся ещё раз использовать те же вычисления при расширении проги?
ArtChaos Онлайн
Lucia Malfoy
расширяемый код?
Lucia Malfoy
П_Пашкевич
Ну, если уж серьёзнее - то надо иметь ввиду вот это.
Marlagram
Ну, самим встроенным ассемблером меня не удивить: он ещё в шестом турбопаскале появился, а из него идея перешла в Дельфи и была заимствована во фрипаскаль. Но ведь там для каждого процессора свой набор операндов. А что касается cuda - я с этим столкнулся в какой-то биоинформатической проге, когда оказалось, что её линукс-версия требует непременно видеокарту NVIDIA (хорошо, что виндовая версия запустилась под вайном).
ArtChaos
> Как лучше писать код

Вот так:

abc = input().split(' ').strip()
print(sum([(x//2+x%2) for float(x) in abc]))

> меня, скажем так, интересует философия написания кода

Функциональная парагидма наше всё.
Ну или даже так, для вящей "расширяемости":

abc = [float(strip(x)) for x in input().split(' ')]
foo = lambda x: x//2 + x%2
print(sum([foo(x) for x in abc]))
ПОИСК
ФАНФИКОВ









Закрыть
Закрыть
Закрыть