以下是我在添加整数的奇数时的尝试:
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/