Python打印页数统计函数报错修复:ValueError问题解决
解决打印机页码统计函数的问题
问题分析
- 原代码抛出
ValueError: not enough values to unpack (expected 2, got 1),原因是直接拆分带-的字符串时,单个页码(比如"2")拆分后仅得到1个元素,无法解包为两个变量。 - 未处理起始页大于结束页的场景(比如"18-12"),这类区间需要反转后再计算页数。
实现思路
- 将输入字符串按
,分割为多个独立的页码/区间片段。 - 遍历每个片段:
- 若片段包含
-,拆分出两个页码并转为整数,取最小值作为起始页、最大值作为结束页,计算该区间的页数(结束页 - 起始页 + 1)。 - 若片段不包含
-,直接视为单个页码,页数加1。
- 若片段包含
- 累加所有片段的页数,返回总和。
完整代码实现
def count_pages(p): total = 0 # 拆分所有页码/区间项 parts = p.split(', ') for part in parts: if '-' in part: # 处理区间,拆分后转换为整数 start, end = map(int, part.split('-')) # 修正倒序区间的起始和结束页 actual_start = min(start, end) actual_end = max(start, end) total += actual_end - actual_start + 1 else: # 处理单个页码 total += 1 return total # 测试用例验证 print(count_pages("5-7, 2")) # 输出4 print(count_pages("12-18, 20-20")) # 输出8 print(count_pages("18-12, 20-20, 5-6")) # 输出10
代码说明
split(', '):将输入字符串拆分为独立的页码项,例如"5-7, 2"会拆分为["5-7", "2"]。- 针对含
-的项,用min和max处理倒序区间,确保起始页始终小于等于结束页,区间页数计算包含两端页码(所以加1)。 - 不含
-的项直接计数加1,对应单个页码的场景。
内容的提问来源于stack exchange,提问作者user19293076
相关产品推荐
相关产品推荐

