Python的While循环 - 变量未更新?(Python While Loop - Variab

2019-10-29 01:56发布

此代码只是会在另一个字符串的字符串,并返回搜索字符串的次数的上次位置或-1,如果它没有找到。

我不明白为什么我的变量next_y没有更新考虑到pos是一个投入的计算next_y 。 我想到的是,如果我更新pos然后next_y也应该更新。 相反, pos被更新,永远留在循环。

def find_last(x,y):
    if x.find(y) == -1:
        return -1

    pos = x.find(y)
    next_y = x.find(y, pos + 1)

    while next_y != -1:
        pos = pos + next_y

    return pos


search = 'tom ran up but tom fell down'
target = 'tom'

print(find_last(search,target))

Answer 1:

你不更改while循环next_y的价值,所以不更新它的价值。 next_y价值被计算一次,并永远(或仅一次)进行比较。 要更新此值,你应该调用在循环 'next_y = x.find(Y,POS + 1)'。

def find_last(x,y):
  if x.find(y) == -1:
    return -1
  pos = x.find(y)
  next_y = x.find(y, pos + 1)
  while next_y != -1:
    pos = pos + next_y
    next_y = x.find(y, pos + 1)
  return pos

search = 'tom ran up but tom fell down'
target = 'tom'

print(find_last(search,target))


Answer 2:

正如评论所说,如果你想更新next_y ,你需要明确地做到这一点:

while next_y != -1:
    pos = pos + next_y
    next_y = x.find(y, pos + 1)


文章来源: Python While Loop - Variable Not Updating?