以下是我在添加整数的奇数时的尝试:

def sumOdd(n):
    for i in range(n):
        if n % 2 == 0:  # if n is odd
            n -= 1
    print(sum(range(1, n, 2)) + n)  # The range(1,n,2) starts at 1 and counts by twos until it reaches n


sumOdd(123)  # 4


有小费吗?

最佳答案

两种解决方案,一种是将其转换为字符串,另一种是将其直接处理为整数。

def sumOdd(n):
    n = str(n)
    sumn = 0
    for i in n:
        i = int(i)
        if i % 2 == 1:  # if n is odd
            sumn+=i
    return sumn

print(sumOdd(132495)) # 4388797504


def sumOdd_(n):
    n = abs(n)
    sumn = 0
    while n>0:
        digit = n%10
        n = n//10
        if digit %2 ==1:
            sumn+=digit
    return sumn

myn = 132495
assert sumOdd_(myn)==sumOdd(myn)


否则,您可以在Python中使用pythonic方式使用divmod。并请注意,通常div和mode运行速度比强制转换为str要快。

def sumOdd_2(n):
    sumn=0
    while n:
        # "pop" the rightmost digit
        n, digit = divmod(n, 10)
        if digit %2 ==1:
            sumn+=digit
    return sumn

关于python - 将整数中的奇数位数相加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49503067/

10-09 21:08