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

我想将整数拆分为单独的元素并将元素相加

我想将整数拆分为单独的元素并将元素相加

宝慕林4294392 2023-08-08 17:58:02
我编写了一个代码来分割一个整数并将它们单独相加,但在某些情况下,总和是错误的, 例如 555 的预期输出是 15,但它显示 16def find_sum_of_digits(number):    sum_of_digits=0    sum=0    var=0    #Write your logic here    while number>0:        var = number%10                sum += var        number = number/10        sum_of_digits=sum            return int(sum_of_digits)#Provide different values for number and test your programsum_of_digits=find_sum_of_digits(123)print("Sum of digits:",sum_of_digits)我想要的输出是将 123 添加到显示 6,反之亦然其他整数值
查看完整描述

4 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

一个简单的print跟踪你的值就会显示问题:

number = number/10

您需要整数除法:

number = number//10

您的代码计算无限总和,然后必须除以 10,直到内部表示的剩余数字减少到 0。

一种更简单的方法是获取原始字符串输入并将字符串的每个字符转换为一位整数。添加这些整数。


查看完整回答
反对 回复 2023-08-08
?
慕婉清6462132

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

您还可以这样做:


number = int(input("Enter the Number: "))


sum_of_digits = 0

while number > 0: 


    digit = number % 10

    sum_of_digits = sum_of_digits + digit

    

    number = number // 10


查看完整回答
反对 回复 2023-08-08
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

下面是一个使用原始问题中提供的示例作为起点的解决方案。


def find_sum_of_digits(number):

    result = 0 # Variable to store result

    while number > 0:

        digit = number % 10 # Current digit is remainder from number / 10

        result += digit # Add digit to result and assign value to result variable

        number //= 10 # Number is number // 10 to shift left to next digit, disregarding fractional part of quotient

    return result

请注意,除以 10 向左移到下一位时,使用了下限除法运算符( //) 而不是标准除法运算符 ( /) 。number正是这种更改将阻止您获得错误的return值(例如16代替15when number = 555)。

Python 向下除法返回int表示两个数字的截断除法;而不是 a float(如 Python 中的标准除法那样),这对于您的目的来说是必需的,因为您只关心 的数字int,而不关心标准除法可能产生的任何小数部分 - 这些在number您转换回之前会被求和int原始示例。

这是另一个有效的解决方案,可以产生所需的输出。这次我们返回sum函数的结果,该结果给出了int表示 的每个数字的实例的列表理解number

def find_sum_of_digits(number):
   return sum([int(d) for d in str(number)])

在这种情况下,通过首先转换为 a ,然后迭代每个,将每个int数字转换回 ,找到表示 的每个数字。numbernumberstrcharnumber strint


查看完整回答
反对 回复 2023-08-08
?
青春有我

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

另一种解决方案是:

def find_sum_of_digits(number):
  return sum([int(n) for n in str(number)])


查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

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