gpt4 book ai didi

python - 循环列表列表(嵌套 for 循环)并不像我想要的那样工作

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:22 25 4
gpt4 key购买 nike

我想要做的是循环board中的元素,查找“P”,然后检查是否有连续的5个“P”(可以这么说,向下) )。请参阅代码中的注释以获取进一步的解释。不过,inRow 给我的输出是 15。

提示:五个“P”不应该是静止的,而是由玩家放置的,但在这个例子中,我只是放置了静止的。

board = [['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'P', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'P', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'P', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'P', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'P', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E']]
# has 10 rows, with 10 elements in each

inRow=0

for y in range(10): # Loops over each row (y-index)
x=0 # x-index resets each new y-index loop (start on the first element (0) of each row)
for pos in board[y]: # pos loops over all elements in current row
if pos is "P": # checks if pos is "P"
for i in range(5): # loops over 0, 1, 2, 3, 4
if board[y+i][x] is "P": # when i=0, board[y+i][x] is ought to be where we find the first "P", then check if the following rows (we add +1 to y for each loop) is also "P"
inRow += 1 # Counter to see if we got 5 in a row
break
x+=1

print(inRow)

最佳答案

您添加到inRow即使没有 5 “P”连续。想一想:

第一次在第二行点击“P”时,倒计时,您会得到 5 。下次当您在外侧敲击“P”时for循环,倒计时,你会得到 4 。现在您已经数过 9 “P”。继续这个,你会得到5 + 4 + 3 + 2 + 1 = 15 “P”。

解决方案是使用中间计数器,并且仅将该中间计数添加到 inRow如果该计数器是 5 .

要正确计数,您可以在 for pos in board[y]: 之后声明一个计数器

counter = 0

然后,代替 inRow += 1 ,您使用counter += 1 .

最后,在break语句之前,进行检查:

if counter == 5:
inRow += counter

关于python - 循环列表列表(嵌套 for 循环)并不像我想要的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com