为什么我的Python函数返回全量列表而非单个总计数?
问题诊断
你的代码存在两个核心问题:
- 打印语句的位置错误:
print(total)写在了for循环内部的if判断分支里,每次匹配到符合条件的数字都会打印一次当前的统计值,最终会输出几十行中间结果,不会只输出最终计数。 - 不符合作业的统计要求:作业要求分别统计能被7整除、能被13整除的数字数量,现有代码只统计了满足「能被7或13整除」的总个数,没有拆分两类统计结果。
修正后可运行代码
import random def randDiv(): n = random.randint(1, 1000) # 分两个计数器分别统计 count_div7 = 0 count_div13 = 0 for x in range(n, n+200): if x % 7 == 0: count_div7 += 1 if x % 13 == 0: count_div13 += 1 # 遍历完全部数字后再打印结果 print(f"区间内能被7整除的数字个数:{count_div7}") print(f"区间内能被13整除的数字个数:{count_div13}") # 如果需要统计符合条件的总个数可以加下面这行 # print(f"满足条件的总个数:{count_div7 + count_div13}") randDiv()
优化点说明
- 移除了不必要的列表存储逻辑,直接用计数器累加,运行效率更高
- 打印逻辑移到循环外,只会输出最终的统计结果
- 拆分两个计数器,完全匹配作业的分别统计要求
内容的提问来源于stack exchange,提问作者Chris Burkhart
相关产品推荐
相关产品推荐

