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

Пароль

 
Войти при помощи
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
8 комментариев из 24
Lucia Malfoy
если кажется, что всё плохо, юзай профайлер
Lucia Malfoy
в примерах-то да, но если во втором примере придётся ещё раз использовать те же вычисления при расширении проги?
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]))
ПОИСК
ФАНФИКОВ







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