为了账号安全,请及时绑定邮箱和手机立即绑定

怎么求一个任意数的位数和?求大神解答!

怎么求一个任意数的位数和?求大神解答!

cnaz 2016-09-18 04:27:57
如题。例如用户输入45678,显示的会是:4+5+6+7+8=30                      3+0=3想了思路,大概应该使用while循环和%以及// 来求解但是不知道具体怎么操作如果是任意数的话怎么控制地板除的数量呢?
查看完整描述

8 回答

已采纳
?
Iamxiaoq

TA贡献33条经验 获得超6个赞

def my_add(s):
    s = str(s)
    if len(s) == 1 or not s.isdigit():
        return 
    nums = map(lambda x:int(x), s)
    total = sum(nums)    
    print("{}={}".format("+".join(s), total))
    my_add(total)

s = input("input a number:")
my_add(s)


查看完整回答
反对 回复 2016-09-19
?
phpmadman

TA贡献2条经验 获得超0个赞


function cal(num){
if(num>=10){
var str=num+"";
var num=0;
var arr=str.split("");
for(var i=0;i<arr.length;i++){

num+=arr[i]-0;
if(i<arr.length-1){
document.write(arr[i]+"+")
}else{
document.write(arr[i]+"="+num+"<br/>")
}
}
return cal(num);
}else{

return "OK";
}

}
var a=prompt("请输入一个数字","在这里输入数字");
cal(a);

//img1.sycdn.imooc.com//57e0e71b0001a07b05750222.jpg

查看完整回答
反对 回复 2016-09-20
?
cnaz

TA贡献3条经验 获得超0个赞

while num > 0 :                         
      digit= num % 10
      num= num//10
      if num > 1:
         print (digit, end =" ""+"" ")
      else:
         print (digit, end =" ")
      digit_sum += digit
print ("=",digit_sum, end = " ")
print ("")


while digit_sum >10:                       
     digit= digit_sum % 10
     digit_sum= digit_sum//10
     if digit_sum > 1:
       print (digit, end =" ""+"" ")
     else:
       print (digit, end =" ")
     digit_sum += digit
     print ("=",digit_sum, end = " ")
     print ("")

我是这样做的,但是第二个循环出了问题,最后的运算结果不对。但是一修改就很容易出现无限循环的情况//img1.sycdn.imooc.com//57defee4000128ef06580215.jpg

查看完整回答
反对 回复 2016-09-19
?
qq_迟来的秋天_04009602

TA贡献8条经验 获得超2个赞

def my_fun(number=0):
    return sum(map(int, list(str(number))))


查看完整回答
反对 回复 2016-09-18
?
qq_迟来的秋天_04009602

TA贡献8条经验 获得超2个赞

python实现方式:

def my_fun(number=0):
    return sum([int(i) for i in list(str(number))])


查看完整回答
反对 回复 2016-09-18
?
Nelson_Zhao

TA贡献21条经验 获得超4个赞

def addnum(number):
   nums = map(lambda x: x, number)
   result = reduce(lambda x, y: int(x) + int(y), nums)
   print ' + '.join(nums) + ' = ' + str(result)

if __name__ == "__main__":
   addnum(raw_input('Please input> '))


查看完整回答
反对 回复 2016-09-18
  • Iamxiaoq
    Iamxiaoq
    nums = map(lambda x: x, number)这句多余了吧,直接把number传到reduce就行了
  • Nelson_Zhao
    Nelson_Zhao
    谢谢提醒,确实是多余了,之前一直习惯这种写法,没有尝试别的。谢谢!
  • 8 回答
  • 1 关注
  • 2606 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信