Это «Не дайте мне пять!». ката на кодоводах. (https://www.codewars.com/kata/dont-give-me-five/train/python).Функция sum() добавляет значения?
Вот что вам нужно сделать: «В этом ката вы получите начальный номер и конечный номер региона и должны вернуть счет всех чисел, кроме чисел с 5 в нем. Начальный и конечный номера оба включено!».
Я решил это уродливо, что я не размещаю здесь. То, что я показываю, - это решение одного из пользователей. Он выглядит гладко, но я не понимаю, почему он работает.
def dont_give_me_five(start,end):
return sum('5' not in str(i) for i in range(start, end + 1))
Я всегда считал, что sum()
суммирует значения, а не индексирует. И если я прав, то «i» должен быть значением, а не индексом. Но если это так, почему это решение работает?
«Что я показываю это решение одного из пользователей «. - Почему бы вам не спросить этого пользователя? – TigerhawkT3
'sum' суммирует все, что внутри, оно не преобразует индексы в значения или что-либо магическое. Попробуйте 'print (['5' не в str (i) для i в диапазоне (начало, конец + 1)]). –
Вам нужно 'sum (i для i в диапазоне (начало, конец + 1))' и фильтр 'if '5' not в str (i)'. См. [Понимание генератора] (https://stackoverflow.com/questions/364802/generator-comprehension). –