如何修正Python列表校验代码:判断输入整数列表是否符合指定规则
Python列表校验代码修正方案
原代码存在的核心问题
- 输入阶段仅校验了最后一个输入元素的取值范围,未校验列表首尾是否为0和20,也未校验所有输入元素都在0-20区间内
- 遍历逻辑错误:
for i in elem中elem是单个整数,无法遍历,应该从列表的第二个元素(索引1)开始遍历校验 - 条件判断逻辑完全错误:Python中乘法不能用
2(i)这种写法,且判定规则写反,正确规则是当前元素 = 前一个元素 + 2 或 当前元素 = 前一个元素 * 4 - 原逻辑只要有一个元素符合条件就打印True,没有做到全量校验所有元素都符合规则才返回True
修正后的完整代码
lst = [] n = int(input("请输入列表的元素个数:")) for i in range(n): elem = int(input("请输入0到20之间的整数:")) # 先校验单个元素取值范围 if elem < 0 or elem > 20: print("输入元素超出0-20范围,校验不通过") exit() lst.append(elem) is_valid = True # 先校验首尾规则 if lst[0] != 0 or lst[-1] != 20: is_valid = False else: # 遍历校验相邻元素规则 for i in range(1, len(lst)): prev = lst[i-1] current = lst[i] # 两个条件满足任意一个即可 if not (current == prev + 2 or current == prev * 4): is_valid = False break print(is_valid)
核心逻辑说明
- 输入阶段就校验每个元素是否在0-20区间,不符合直接退出校验
- 优先校验首尾元素是否符合「开头为0、末尾为20」的要求,不符合直接判定为不通过
- 从第二个元素开始逐个和前一个元素比对,只要有一个元素不满足规则,立刻终止遍历判定为不通过
- 所有规则都满足才会输出
True,否则输出False
内容的提问来源于stack exchange,提问作者sairishi
相关产品推荐
相关产品推荐

