39
Axel
Last seen 1 month ago
Member for 2 years, 8 months, 21 days
Difficulty Normal
Optimization ideas:
-->
# first step: removed List (used once), space as argument of split(), and useless condition
counter=0
for word in text.split():
if word.isdigit():
counter += int(word)
return counter
-->
# next step - comprehension with if
More
you need no walrus and if-comprehension:
return sum(
max(0 ,(min(d2, end_watching or d2) - max(d1, start_watching or d1)).total_seconds())
for d1, d2 in zip_longest(*[iter(els)] * 2, fillvalue=end_watching)
and zip_longest too:
for d1, d2 in zip(els[::2], els[1::2] + [
More
Great! Btw...
return items[items.index(border) if border in items else 0:]
More
Можно попробовать сделать для воина функцию make_hit(self, target), и пихнуть туда всю логику удара. при этом хорошим решеним будет пихнуть вынести defense на уровень базового класса. Таким образом можно сократить функцию fight(attacker, defender) для двух воинов вообще до 3 строк. Ну или до 4х, есл
More
a slightly longer in symbols than with zip, but faster
return sum([(b - a).total_seconds() for a, b in zip(els[::2], els[1::2])])
More
Slices are good, but slices without if better )
return items[1:] + items[:1]
More
Interesting 'except IndexError' application! Better than use 'I love python' task for it :)
More
It's not necessary to use regular expressions. Another one-line solution:
1. split the text with split(' ')
2. reverse each string with slice
3. combine parts back with ' '.join()
More
И опять слишком похоже на C++ :)
Есть несколько хитростей, чтобы сократить функцию до одной строчки
1. Добавьте в MORSE такое значение - "": "*", и посмотрите, во что превратится code.split(' '). Это позволит вам избавиться от цикла по словам.
2. Используйте comprehension вместо внутреннего цикла (
More
Для для is_alive можно использовать декоратор \@property. Уберет кучу строчек кода (минимум 4)
@property
def is_alive(self):
return self.health > 0
More
Слишком много лишнего. Не бойтесь заставить программу поработать, когда не так страшно время выполнения.
Например первое условие (if items==[]) можно убрать, и ничего не изменится
Далее, страшное сравнение можно сильно упростить вот так:
x := (len(items) + 1) // 2
Ну и наконец в питоне 3.8 в
More
Very familiar solution in comments :) My last version is 5 lines only...
More
Constructions like 'True if condition1 else condition2' looks strange, and may be replaced with 'condition1 or condition2'
return True if not text.replace(' ', '').isalpha() else text.isupper()
-->
return not text.replace(' ', '').isalpha() or text.isupper()
Btw for this task you can s
More
Это решение точно смотрится лучше предыдущего. Но тоже есть что поправить :)
Для начала хотя бы так:
datetime(1970, 1, 1, 0, 0, 0) --> datetime.max
datetime(9999, 12, 31, 23, 59, 59)) --> datetime.max
Далее, раз вы уже используете цикл по zip, прямо напрашивается сделать так:
i
More