今天来看一个非常经典的 Python 报错:

for i, num in enumerate nums:

运行后,Python 当场翻脸:

SyntaxError: invalid syntax
                            ^^^^
    for i, num in enumerate nums:
Line 4  (Solution.py)

这个报错的意思是:语法错误

Python 的潜台词大概是:

“哥们,我知道你想遍历 nums,但你这个写法我真不认识。”


正确写法

正确代码应该是:

for i, num in enumerate(nums):
    print(i, num)

注意重点:

enumerate(nums)

enumerate 后面必须加括号。

错误写法:

enumerate nums

正确写法:

enumerate(nums)

这就像你点外卖,不能说:

“老板,我要 enumerate nums。”

你得说清楚:

“老板,我要 enumerate 这个 nums。”

括号就是 Python 里的“下单按钮”。


enumerate 是干什么的?

enumerate(nums) 可以让你在遍历列表时,同时拿到下标和元素

比如:

nums = [6, 5, 10]

for i, num in enumerate(nums):
    print(i, num)

输出:

0 6
1 5
2 10

其中:

i

表示下标。

num

表示当前元素。

也就是说,它等价于:

for i in range(len(nums)):
    num = nums[i]
    print(i, num)

enumerate(nums) 更简洁,也更像 Python 代码。


为什么会报 SyntaxError?

因为 Python 的函数调用必须带括号。

比如:

print("hello")
int("123")
len(nums)
enumerate(nums)

这些都是函数调用。

你不能写成:

print "hello"
int "123"
len nums
enumerate nums

Python 3 不认这种写法。

所以这句:

for i, num in enumerate nums:

问题就出在:

enumerate nums

应该改成:

enumerate(nums)

记忆口诀

记住一句话:

函数调用要括号,少了括号就挨刀。

或者更直白一点:

看到 enumerate,后面直接跟小括号。

for i, num in enumerate(nums):
    ...

最后总结

这次报错不是算法问题,也不是 for 循环问题,而是少了一个括号。

错误写法:

for i, num in enumerate nums:

正确写法:

for i, num in enumerate(nums):

Python 很严格,少个括号它就不认识你。

写代码的时候,语法别太随意。你以为你在省括号,Python 以为你在创造新语言。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐