Python 报错名场面:for i, num in enumerate nums 为什么错?
·
今天来看一个非常经典的 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 以为你在创造新语言。
更多推荐
所有评论(0)