如何统计0到n平方数中指定数字d的出现次数?函数实现疑问
解决nb_dig函数统计数位中数字出现次数的问题
你的问题出在list.count(d)只会统计列表中完全等于d的元素,无法识别元素数位里的d。要实现需求,需要把每个平方数转成字符串,逐个统计每一位中d的出现次数,再累加总数。
修改后的代码如下:
def nb_dig(n, d): total = 0 target_char = str(d) for i in range(n + 1): square_str = str(i ** 2) total += square_str.count(target_char) return total
代码说明:
- 先把目标数字
d转成字符串target_char,方便和平方数的每一位字符比对 - 遍历0到n的每个数,计算平方后转成字符串
- 用字符串的
count方法统计当前平方数中target_char的出现次数,累加到总计数total里 - 最后返回总计数
测试你的例子:当n=4、d=1时,遍历得到的平方字符串分别是"0"、"1"、"4"、"9"、"16",统计其中"1"的出现次数:"1"贡献1次,"16"贡献1次,总共2次,符合预期结果。
内容的提问来源于stack exchange,提问作者Bombardini
相关产品推荐
相关产品推荐

