计算整数各位数字之和python_Python - 计算任一输入的正整数的各位数字的和

最近在看数据结构,遇到这个练习题,一开始觉得很简单,后来一想正整数不确定,位数多了用常规做法有点复杂。看了看网上的做法,用了递归的算法,上代码:

#coding:utf-8

import math

#首先判断几位数

def diGit(n):

a = n

c = 0

while a != 0:

a = a / 10

c += 1

return c

def sumDigits(n):

c = diGit(n) #判断几位数

if n < 10:

return n

else:

l = int(n / math.pow(10, c -1)) #取最高位

#print l

y = int(n - l * math.pow(10, c-1)) #取最高位后剩余

#print j

n = l + sumDigits(y)

return n

def main():

i = int(raw_input(unicode('请输入任意整数','utf-8').encode('gbk')))

sum = sumDigits(i)

print sum

main()

————————————————

版权声明:本文为CSDN博主「gungun_changjiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/gungun_changjiang/article/details/80705742

还是觉得有点复杂。。。。。。

翻了翻前面的知识点,看到这么一句话:数据结构的存储结构会影响算法的好坏。于是就换了一个思路:把这个正整数当成一个字符串来处理。具体代码如下:

#计算任一输入的正整数的各位数字之和

n = input("请输入一个正整数:") #将数字作为字符串输入

list = list(n) #将字符串转换为列表

sum = 0

for i in range(len(list)):

sum += int(list[i]) #将字符转换为整数型,并累加列表中的每个数字

print(sum)

运行结果:

请输入一个正整数:7453423432

37

Process finished with exit code 0

是不是看起来简单多了,看来有时候要换个思路解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值