首页 > 解决方案 > 如何在 for 循环中将 i 增加 3

问题描述

我有一个随机 X 和 Y 的列表,例如 [XXYXYYX]

我想看一个 X,增加计数,然后跳过接下来的两个数字。

例如 [XXXY] = 1 和 [XXXYX] = 2

for i in range(0,len(arr)):
        if arr[i] == 'X':
            count+=1
            i+=2
        
    return count

我的解决方案不是在 X 之后直接跳过接下来的两个值。

示例测试:“XYXXXXXXYX”。错误答案(得到 7 预期 3)

示例测试:'XXYXXXY' 错误答案(预期为 5 2)

示例测试:“XXXX”错误答案(预期为 4 为 2)

标签: pythonfor-loop

解决方案


'i' 变量正在被 for 循环更改,因此如果向其添加 2,则不会发生任何变化。我的意思是“i”的值发生了变化,但只是在这个时候。在那之后,它被再次设置并具有一个新值(由 for 循环设置)。

有我的解决方案。

s = 'XYXXXXXYX'

count = 0
i = 0
while i < len(s):
    if s[i] == 'X':
        count += 1
        i += 3
    else:
        i += 1
print(count) # 3


#With the for loop
count = 0
skipped = 0
is_skipping = False
for i, letter in enumerate(s):
    if not is_skipping:
        if letter == 'X':
            count += 1
            is_skipping = True
    else:
        skipped += 1
        if skipped > 2:
            is_skipping = False
            skipped = 0
print(count) # 3

推荐阅读