Коллекции загружаются
Никак не могу понять, как это гуглить, поэтому спрошу тут:
Как лучше писать код: с лишней переменной, куда единоразово сведём расчёты или каждый раз фигачить расчёты? Пример: 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
|
Если можно не объявлять переменную, то лучше ее не объявлять. Если конечно, это не выльется в 1000 символьную запутанную лапшу.
|
Дoлoxов
но, согласись, что 6 переменных просто так выглядят, ну... так себе. |
rewaQ
а если в итоге вот те вычисления, что можно выделить в переменную, будут повторяться? |
ArtChaos
Если будут, то можно. Но для разового расчета лучше не заводить специальные переменные. |
Bless
О, давно тебя не видел в блогах) С возвращением) 2 |
1 |
Дoлoxов
Привет, да, я ожил, но преимущественно в режиме "пассивный чтец". Рад видеть знакомые лица :) 1 |
//Провокационно
Напишите на ассемблере и не страдайте. Переменные, понимаешь. Абстрактный ввод-вывод, пхе. :-))) 2 |
Marlagram
Кросс-платформенный ассемблер? Если это Питон, оно же с высокой вероятностью будет выполняться на сервере с неведомой архитектурой. |
Lucia Malfoy
|
|
>зарузить сервер вычислениями
чо в обоих вариантах примерно одинаковое кол-во операций |
Lucia Malfoy
|
|
>интересует философия написания кода
пиши читаемый и расширяемый код, изи |
Lucia Malfoy
|
|
если кажется, что всё плохо, юзай профайлер
|
Lucia Malfoy
в примерах-то да, но если во втором примере придётся ещё раз использовать те же вычисления при расширении проги? |
Lucia Malfoy
расширяемый код? |
Lucia Malfoy
|
|
ArtChaos
да |
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])) 1 |