LeetCode编写twoSum题解时Python for循环冒号报错问题求助
问题排查与修复方案
一、第5、6行语法错误修复
- 第5行
for n1 in range(1, len(nums) + 1):末尾的冒号是中文全角符号,Python仅识别英文半角符号,替换为英文半角:即可解决系统报的冒号错误。 - 第6行
if nums[n1] == nums[n2]末尾缺少英文半角冒号:,补充后即可解决该行的语法报错。
二、其余影响运行的逻辑错误修复
除语法问题外,你的代码还存在多处逻辑错误,不符合两数之和题目的要求:
- 索引规则错误:Python列表从0开始索引,你设置的
range(1, len(nums)+1)会跳过第一个元素,且最后访问nums[len(nums)]时会触发数组越界报错,需改为range(len(nums))。 - 判断条件错误:你当前判断的是下标之和等于目标值,实际应该判断两个下标对应的值之和等于目标值,即
nums[n1] + nums[n2] == target。 - 冗余无效代码:开头的
strnums是空列表,遍历操作不会执行,完全无用可直接删除。 - 输出规则错误:题目要求返回两个符合要求的下标,你当前是打印对应的值,需改为返回
[n1, n2]格式的列表。 - 重复判断问题:双层循环会重复校验同一对下标,还会出现两个下标相同的无效情况,可添加判断
if n1 >= n2: continue过滤。
三、修正后可正常运行的完整代码
from typing import List class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for n1 in range(len(nums)): for n2 in range(len(nums)): if n1 >= n2: continue if nums[n1] + nums[n2] == target: return [n1, n2] return []
内容的提问来源于stack exchange,提问作者William Zeng
相关产品推荐
相关产品推荐

