如何对range函数生成的值求和?Python新手技术求助
问题解决:计算可整除页码的个位数字之和
错误根源
你碰到的“不可迭代”报错,是因为sum()函数必须接收可迭代对象(比如列表、元组这类能逐个取出元素的集合),但你传的ones是单个整数——每个页码的个位数字是一个单独的数,不是可迭代的集合,所以函数没法处理。
另外你的range(0, x + y, y)还会包含超过页码上限x的数(比如x=12、y=2时,会生成14,但教材页码只到12),这部分逻辑也得修正。
修正后的代码(两种写法)
写法一:逐个累加(新手更易理解)
# 输入页码数和随机值 page_count = int(input("Number of pages: ")) step = int(input("Random value: ")) total = 0 # 遍历所有≤page_count且能被step整除的页码(从step开始,跳过0) for page in range(step, page_count + 1, step): # 取当前页码的个位数字 last_digit = page % 10 # 累加到总和里 total += last_digit print(total)
写法二:先收集再求和(用sum函数)
如果一定要用sum(),可以先把所有个位数字存到列表里,再传给sum:
page_count = int(input("Number of pages: ")) step = int(input("Random value: ")) last_digits = [] for page in range(step, page_count + 1, step): last_digits.append(page % 10) print(sum(last_digits))
示例验证
拿你说的x=12、y=2的情况测试:
生成的有效页码是2、4、6、8、10、12,对应的个位数字是2、4、6、8、0、2,总和是2+4+6+8+0+2=22,运行代码会输出正确结果22。
内容的提问来源于stack exchange,提问作者mmach_one
相关产品推荐
相关产品推荐

