Сначала вашей функции передается аргумент n
, представляющий собой целое число, цифры которого необходимо сложить вместе, но вы полностью игнорируете это значение и вместо этого вычисляете сумму, используя значение lst
. Инициализация lst
выполняет половину работы, необходимой для получения результата. Вся работа, необходимая для получения результата, должна выполняться в функции rec_dig_sum
, которая должна использовать переданное ей значение n
и ничего больше. Используя выбранный вами подход, который является удовлетворительным, мы получаем:
def rec_dig_sum(n):
convert_to_int = [int(i) for i in str(n)]
total = sum(convert_to_int)
return total
Во-вторых, ваше утверждение lst = list(str(n))
сгенерирует ошибку, поскольку n
определяется только как аргумент функции для rec_dig_sum
и поэтому находится за пределами области действия.
В-третьих, моя интерпретация вашего упражнения заключается в том, что функции distr_of_rec_digit_sums
будет передано два значения, low
и high
, и с помощью этих значений вы должны сгенерировать все целые числа. в диапазоне low, low + 1 ... high
и для каждого вызова функции rec_dig_sum
. Эти повторные вызовы rec_dig_sum
приведут к возвращению конечного числа различных значений (это число составляет не менее 1 и не более high - low + 1
). Для каждого отдельного значения подсчитайте, сколько раз это значение встречалось, и создайте словарь, в котором каждый ключ представляет собой отдельное значение, возвращаемое rec_dig_sum
, а значение - это число раз, которое было возвращено. Например, вызов rec_dig_sum
с аргументами 12
и 21
приведет к возвращению значения 2
. Итак, если функция distr_of_rec_digit_sums
вызывается с low=12
и high=21
, то один из ключей словаря будет 2
со значением 2 (количество). Затем вы должны вернуть этот словарь. Теперь, когда я, надеюсь, объяснил это лучше, я оставлю вам более совершенную попытку. Если у вас есть проблемы с этим, задайте это как отдельный вопрос.