琅琊王朝 发表于 2023-6-29 21:32:19

如何遍历二位列表?

我希望能够遍历二位列表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')






Ewan-Ahiouy 发表于 2023-6-29 21:33:55

根据您的代码,遍历二维列表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时会先清空屏幕,然后打印整个棋盘,接着进行玩家输入并更新棋盘上的棋子位置。持续循环直到满足退出条件。

isdkz 发表于 2023-6-29 21:41:07

看起来你在制作一个简单的井字游戏,你的代码需要一些调整才能正常工作。这是一个修复后的版本,你可以参考一下:

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]
查看完整版本: 如何遍历二位列表?