Python列表append报Native JS does not support indexing错误解决
问题说明
- 需求:输入一组每行一个的非负整数,以0作为输入结束标志,输出序列中第一个最大值的索引。
- 遇到问题:实现代码运行时报错
Native JS does not support indexing,初步判断lista.append[n]写法存在问题,不清楚具体错误原因和修复方案。
原错误实现代码:
n = -1 lista = [] while n!= 0: n = int(input()) lista.append[n] print(max(lista), lista.index(max(lista)))
错误原因
核心错误有两处:
append是Python列表的内置方法,调用方法需要用小括号()传参,你写的lista.append[n]用了方括号[]——这是Python里索引/下标访问的语法,相当于尝试对append这个函数对象做下标取值,才会触发“不支持索引”的相关报错,部分在线编程环境语法解析异常时就会抛出你看到的Native JS相关报错提示。- 现有逻辑会把作为结束标志的0也存入列表,会干扰最大值计算和索引结果。
修复后代码
n = -1 lista = [] while n != 0: n = int(input()) if n == 0: break lista.append(n) max_value = max(lista) # 注:Python列表默认索引从0开始计数,如果题目要求位置从1开始算,结果+1即可 print(lista.index(max_value))
修复点说明
- 把错误的下标写法
lista.append[n]改为正确的方法调用写法lista.append(n),解决语法报错。 - 增加结束标志判断,读到0时直接跳出循环,不把0存入目标序列,保证计算的是输入的有效非负整数序列。
内容的提问来源于stack exchange,提问作者Meno
相关产品推荐
相关产品推荐

