【发布时间】:2022-12-13 01:57:35
【问题描述】:
我在使用 for 循环时遇到问题,我不知道为什么我的循环没有按预期工作。
代码:
class Solution:
def searchInsert(nums, target):
pos = 0
for i in nums:
if nums[pos] != target:
pos = pos + 1
print(pos)
break
Solution.searchInsert([1,3,5,6], 5)
该程序接收一个整数数组和另一个我称为目标的整数,脚本必须返回数组中目标编号所在的位置。
在这种情况下,我的数组“nums”包含 [1,3,5,6],我的目标是 5,所以结果必须是 2,因为目标 (5) 的编号在数组的位置“2” .
当我运行脚本时,问题就来了。而不是 2 脚本给了我 1
如果有人发现代码中的错误,请告诉我。
【问题讨论】:
-
为什么不直接使用
nums.index(target)? -
您在循环外实例化迭代器并在控制结构外递增它。这很好奇。声明 for 循环后,尝试使用此语句跟踪您的值: print("i is %i, pos is %i, target is %i" %(i,pos, target))
-
你似乎在第一次迭代后打破了循环(但你帖子中的缩进很奇怪)。这就是为什么你得到 1,这是
pos的第一次更新。 -
您的函数将始终隐式返回 None 因为您明确休息这为了在第一次迭代期间循环。您可能还想重新阅读此功能的 Leetcode 说明
标签: python arrays for-loop insert target