第一个函数返回该数字的递归数字总和。第二个函数返回字典,其中key是reg_dig_sum,value是该数字的计数。当我测试它失败给我这个
elf.assertEqual(sum_dict[0], 1)
AssertionError: 0 != 1
我该如何解决?
def reg_dig_sum(n):
x = sum(int(digit) for digit in str(n))
if x < 10:
return x
else:
return reg_dig_sum(x)
def distr_of_rec_digit_sums(low=0, high=1500):
distr = {}
for x in range(low, high):
if reg_dig_sum(x) not in distr:
distr[reg_dig_sum(x)] = 0
else:
distr[reg_dig_sum(x)] += 1
return distr
1
或删除else
条件来解决此逻辑错误。defaultdict
为您进行初始化。def distr_of_rec_digit_sums(low=0, high=1500):
distr = {}
for x in range(low, high):
if reg_dig_sum(x) not in distr:
distr[reg_dig_sum(x)] = 1 # this should be initialized to 1 for first occurance.
else:
distr[reg_dig_sum(x)] += 1
return distr
defaultdict
from collections import defaultdict
def distr_of_rec_digit_sums(low=0, high=1500):
distr = defaultdict(int)
for x in range(low, high):
distr[reg_dig_sum(x)] += 1
return distr
查看有关将0更改为1的以前的评论和答案
也尝试对reg_dig_sum使用简单得多的代码,结果相同:
def reg_dig_sum(n):
return (n - 1) % 9 + 1