如何遍历二位列表?
我希望能够遍历二位列表piece,从piece到piece,该怎么办?import random,os
xx = -114514
xy = -114514
ox = -114514
oy = -114514
piece = [
[['-'],['-'],['-']],
[['-'],['-'],['-']],
[['-'],['-'],['-']],
]
def xxy():
xx = int(input('请玩家一输入棋子的X坐标'))
xy = int(input('请玩家一输入棋子的Y坐标'))
if piece == '✖' or piece == '⬤':
print('不可下子……')
xxy()
else:
piece = '✖'
def oxy():
ox = int(input('请玩家一输入棋子的X坐标'))
oy = int(input('请玩家一输入棋子的Y坐标'))
if piece == '✖' or piece == '⬤':
print('不可下子……')
oxy()
else:
piece = '⬤'
def draw():
#————————————————
for i in range(piece):
#————————————————
if i == '⬤':
print('⬤')
elif i == '✖':
print('✖')
elif i == '-':
print('-')
xxy()
oxy()
run = True
while run == True:
for mapx in range(3):
for mapy in range(3):
draw()
print()
os.system('clear')
根据您的代码,遍历二维列表piece从piece到piece的方法如下:
# 导入模块
import random, os
# 声明变量和初始化列表
xx = -114514
xy = -114514
ox = -114514
oy = -114514
piece = [
[['-'],['-'],['-']],
[['-'],['-'],['-']],
[['-'],['-'],['-']],
]
def xxy():
global xx, xy# 声明全局变量
xx = int(input('请玩家一输入棋子的X坐标:'))
xy = int(input('请玩家一输入棋子的Y坐标:'))
if piece == '✖' or piece == '⬤':
print('不可下子……')
xxy()
else:
piece = '✖'
def oxy():
global ox, oy# 声明全局变量
ox = int(input('请玩家一输入棋子的X坐标:'))
oy = int(input('请玩家一输入棋子的Y坐标:'))
if piece == '✖' or piece == '⬤':
print('不可下子……')
oxy()
else:
piece = '⬤'
def draw():
os.system('clear')
for row in piece:
for col in row:
print(col, end=' ')
print()
def traverse_piece():
for mapx in range(3):
for mapy in range(3):
draw()
print()
# 主程序入口
run = True
while run:
traverse_piece()
xxy()
oxy()
这样修改后,每次遍历二维列表piece时会先清空屏幕,然后打印整个棋盘,接着进行玩家输入并更新棋盘上的棋子位置。持续循环直到满足退出条件。 看起来你在制作一个简单的井字游戏,你的代码需要一些调整才能正常工作。这是一个修复后的版本,你可以参考一下:
import os
piece = [
['-', '-', '-'],
['-', '-', '-'],
['-', '-', '-'],
]
def draw():
for row in piece:
for elem in row:
print(elem, end=' ')
print()
def place_piece(player):
if player == 1:
symbol = '✖'
else:
symbol = '⬤'
while True:
x = int(input('请玩家{}输入棋子的X坐标: '.format(player)))
y = int(input('请玩家{}输入棋子的Y坐标: '.format(player)))
if x < 0 or x > 2 or y < 0 or y > 2:
print('无效坐标,请重新输入...')
elif piece != '-':
print('该位置已经有棋子了,请重新输入...')
else:
piece = symbol
break
def game():
player = 1
while True:
os.system('clear')# 清屏
draw()
place_piece(player)
player = 3 - player# 交换玩家
game()
这个版本会交替让两位玩家输入他们想要放置棋子的位置,然后在指定的位置放置对应的棋子。在每一轮开始时,会显示当前的棋盘状态。棋盘的坐标是从0开始的,所以合法的输入范围是0-2。如果玩家输入了无效的坐标或者尝试在已经有棋子的位置放置棋子,代码会让他们重新输入。
这个版本还没有结束条件,所以游戏会无限继续下去,直到你手动停止。你可能需要添加一些代码来检查游戏是否结束(一名玩家获胜,或者棋盘已满)。
另外,这个版本使用的符号('✖'和'⬤')可能在某些环境下无法正常显示。你可能需要将它们更换为其他的字符,比如'X'和'O'
页:
[1]