LITTLEWHITS 2021-12-14 11:55 采纳率: 80%
浏览 21

python制作井字棋,该如何设置平局

想问一下这个代码该如何设置平局呢

info = [['.', '.', '.'],
        ['.', '.', '.'],
        ['.', '.', '.']]

def show():
    print('  0 1 2')
    for i in range(3):
        print(i, info[i][0], info[i][1], info[i][2])

def judge():
    if info[0][0] == info[1][1] and info[1][1] == info[2][2]:
        if info[0][0] != '.':
            return info[0][0]
    if info[0][2] == info[1][1] and info[1][1] == info[2][0]:
        if info[0][2] != '.':
            return info[0][2]
    for i in range(3):
        if info[i][0] == info[i][1] and info[i][1] == info[i][2]:
            if info[i][0] != '.':
                return info[i][0]
    for i in range(3):
        if info[0][i] == info[1][i] and info[1][i] == info[2][i]:
            if info[0][i] != '.':
                return info[0][i]

    return 'y'

show()
while True: 
    a = input('玩家x,您要把棋子放到第几行:')
    b = input('玩家x,您要把棋子放到第几列:')
    a = int(a)
    b = int(b)
    info[a][b] = 'x'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break;
    a = input('玩家o,您要把棋子放到第几行:')
    b = input('玩家o,您要把棋子放到第几列:')
    a = int(a)
    b = int(b)
    info[a][b] = 'o'
    show()
    flag = judge()
    if flag == 'o':
        print('玩家o胜利')
        break;

    




















  • 写回答

1条回答 默认 最新

  • 陈.py 2021-12-16 16:42
    关注

    你的代码里没有考虑到:1、用户输入错误的情况;2、下棋位置已经有棋子的情况。我都加上了,你可以看一下,有问题留言

    
    info = [['.', '.', '.'],
            ['.', '.', '.'],
            ['.', '.', '.']]
    
    
    def show():
        print('  0 1 2')
        for i in range(3):
            print(i, info[i][0], info[i][1], info[i][2])
    
    
    def judge():
        if info[0][0] == info[1][1] and info[1][1] == info[2][2]:
            if info[0][0] != '.':
                return info[0][0]
        if info[0][2] == info[1][1] and info[1][1] == info[2][0]:
            if info[0][2] != '.':
                return info[0][2]
        for i in range(3):
            if info[i][0] == info[i][1] and info[i][1] == info[i][2]:
                if info[i][0] != '.':
                    return info[i][0]
        for i in range(3):
            if info[0][i] == info[1][i] and info[1][i] == info[2][i]:
                if info[0][i] != '.':
                    return info[0][i]
        l = []
        for i in [0, 1, 2]:
            for j in [0, 1, 2]:
                l.append(info[i][j])
        if '.' not in l:
            return 'z'
    
    
    show()
    while True:
        while True:
            while True:
                a = int(input('玩家x,您要把棋子放到第几行:'))
                if a not in [0, 1, 2]:
                    print('输入有误,请重新输入')
                else:
                    break
            while True:
                b = int(input('玩家x,您要把棋子放到第几列:'))
                if a not in [0, 1, 2]:
                    print('输入有误,请重新输入')
                else:
                    break
            if info[a][b] == '.':
                info[a][b] = 'x'
                break
            else:
                print('此位置有棋子')
    
        show()
        flag = judge()
        if flag == 'x':
            print('玩家x胜利')
            break
        if flag == 'z':
            print('平局')
            break
    
    
        while True:
            while True:
                a = int(input('玩家o,您要把棋子放到第几行:'))
                if a not in [0, 1, 2]:
                    print('输入有误,请重新输入')
                else:
                    break
            while True:
                b = int(input('玩家o,您要把棋子放到第几列:'))
                if a not in [0, 1, 2]:
                    print('输入有误,请重新输入')
                else:
                    break
            if info[a][b] == '.':
                info[a][b] = 'o'
                break
            else:
                print('此位置有棋子')
    
        show()
        flag = judge()
        if flag == 'o':
            print('玩家o胜利')
            break
        if flag == 'z':
            print('平局')
            break
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月14日

悬赏问题

  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面