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

我编写了一个代码来分割一个整数并将它们单独相加,但在某些情况下,总和是错误的, 例如 555 的预期输出是 15,但它显示 16


def 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 program

sum_of_digits=find_sum_of_digits(123)

print("Sum of digits:",sum_of_digits)

我想要的输出是将 123 添加到显示 6,反之亦然其他整数值


宝慕林4294392
浏览 168回答 4
4回答

慕少森

一个简单的print跟踪你的值就会显示问题:number = number/10您需要整数除法:number = number//10您的代码计算无限总和,然后必须除以 10,直到内部表示的剩余数字减少到 0。一种更简单的方法是获取原始字符串输入并将字符串的每个字符转换为一位整数。添加这些整数。

慕婉清6462132

您还可以这样做:number = int(input("Enter the Number: "))sum_of_digits = 0while number > 0:     digit = number % 10    sum_of_digits = sum_of_digits + digit        number = number // 10

一只甜甜圈

下面是一个使用原始问题中提供的示例作为起点的解决方案。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

青春有我

另一种解决方案是:def find_sum_of_digits(number):   return sum([int(n) for n in str(number)])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python