使用 lambda 函数对数字求和并计算数字

Bel*_*dad 2 python recursion lambda ternary-operator python-2.x

如何将这两个函数转换为使用 lambda 表示法?

def sum_digits(number):
    if number == 0:
        return 0
    else:
        return (number % 10) + sum_digits(number / 10)

def count_digit(number):
    if number == 0:
        return 0
    else:
        return 1 + count_digit(number/10)
Run Code Online (Sandbox Code Playgroud)

Ary*_*thy 6

sum_digits = lambda number: 0 if number == 0 else (number % 10) + sum_digits (number / 10)

count_digit = lambda number: 0 if number == 0 else 1 + count_digit(number/10)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这是使用 lambda的糟糕时机,因为您需要函数名称以便它们调用自己。lambdas 的重点在于它们是匿名的。


mar*_*eau 5

面向字符串的方法不需要递归:

sum_of_digits = lambda n: sum(int(d) for d in str(n))
count_digit = lambda n: len(str(n))
Run Code Online (Sandbox Code Playgroud)