Python实现环形列表相邻求和及'int'不可迭代报错解决
错误原因分析
- 循环语法逻辑错误:
for lst[0] in range(len(lst))不应该将列表首元素作为循环变量,需要定义独立的索引变量遍历列表 - 列表操作方法错误:列表的
+=运算符要求右侧是可迭代对象,你传入整数运算结果就会触发'int' object is not iterable报错,添加单个元素到列表需要使用append()方法 - 逻辑不完整:当前代码仅计算了首元素的相邻和,没有覆盖列表所有位置的元素计算规则
正确实现代码
user_input = input() lst = [int(i) for i in user_input.split(' ') if i.isdigit()] result = [] n = len(lst) if n == 1: print(lst[0]) else: for i in range(n): # 左邻居:i为0时自动取列表最后一个元素 left = lst[i-1] # 右邻居:i为最后一位时自动取列表第一个元素 right = lst[(i+1) % n] result.append(str(left + right)) # 拼接为空格分隔的字符串输出 print(' '.join(result))
代码说明
- 利用Python列表负索引特性,
i=0时lst[i-1]自动取列表末尾元素,刚好符合首元素左邻居的取值规则 - 右邻居使用取模运算
(i+1) % n,当i是最后一个索引时,计算结果为0,自动取列表首元素,符合尾元素右邻居的取值规则 - 所有运算结果转成字符串后用
join方法拼接,输出格式和需求完全匹配
内容的提问来源于stack exchange,提问作者sergeusprecious
相关产品推荐
相关产品推荐

