Python已实现数字各位求和,如何计算平均值?求助
数字各位平均值计算的解决方案
你的现有代码有个小问题:最后print语句里用了{result},但实际存储总和的变量是r,得改成{r}才能正确输出总和。
要计算平均值,你需要统计数字的总位数——平均值等于各位数字之和除以位数。你之前尝试的r/m行不通,因为m只是每次循环取出的单个个位数字,不是总位数。
修改后的完整代码:
num = int(input("Enter a number\n")) sum_digits = 0 digit_count = 0 while num != 0: digit = num % 10 sum_digits += digit digit_count += 1 # 每处理一位,计数器加1 num = num // 10 # 整数除法,直接去掉最后一位 average = sum_digits / digit_count print(f"The sum of all digits is {sum_digits} and the average is {average}")
几个关键点:
- 新增
digit_count变量,用来记录数字的总位数,每次循环递增1 - 把变量名改成
sum_digits、digit这类语义化名称,比r、m更容易理解,后续维护也方便 - 用
num // 10替代int(num / 10),Python里整数除法用//更规范,避免浮点数转换带来的潜在问题 - 用
/计算平均值会得到浮点数结果(比如输入5555时,20/4=5.0),如果需要整数结果,可以换成sum_digits // digit_count
测试输入5555,输出结果为:The sum of all digits is 20 and the average is 5.0
内容的提问来源于stack exchange,提问作者momoshki
相关产品推荐
相关产品推荐

