我试图阻止用户输入一个已经标记的方块,但是for循环继续下一个玩家的输入,而不会将I的值减1,因此玩家1可以重复他的输入。我该如何解决这个问题
arr = [[0,0,0],[0,0,0],[0,0,0]]
grid = grid(arr)
grid.print_grid()
for i in range(9):
row = int(input("Enter the row name: "))
col = int(input("Enter the column name: "))
if(arr[row][col] == 0):
if(i%2):
arr[row][col] = 1
else:
arr[row][col] = 2
else:
print("\nThat square has already been marked! Please select another square")
i = i-1
continue
grid.print_grid()
res = grid.grid_checker()
if (res == 1):
print("\nPlayer 1 wins the game!")
break
elif(res == 2):
print("\nPlayer 2 wins the game!")
break
elif(i == 8):
print("\nThe game has ended in a draw!")
您需要存储另一个变量来跟踪轮到谁。在循环体中时,不能修改正在循环的变量。这意味着当你在循环中运行时,我不能被操纵。下面是我将如何改变它
在这里,我们将把回合数保存在变量
turn
中,并且只有当我们能够确认一个玩家已经成功完成了他们的回合时,才增加该变量为什么不能修改
i
:为了优化,循环通常在转换为汇编指令之前由python进行扩展。例如,像这样的简单循环:可以扩展为如下内容:
这样做是为了避免在内存中跳转。因此,正如您在这里所看到的,
i
被重新分配给循环的每个迭代。因此,即使更改循环体中i
的值,它也将在下一次迭代之前重新分配for i in range(9)
创建一个列表并执行迭代块9次,i
为0、1、2、3、4、5、6、7、8。如果你使用i
它将跳转到下一个数字。您可以将其替换为:并在缩进块的末尾添加
Python中的p>^ {CD5>}在C++中不象^ {CD6>}。i+=1
相关问题 更多 >
编程相关推荐