2401_83509656 2024-05-22 21:14 采纳率: 100%
浏览 4
已结题

python的小问题,一直报错

img


五子棋
想实现机械对弈,但是 else后面一直报错。拿ai问显示不在一个棋盘里面。但是报错显示列表超了。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-22 21:14
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的代码片段中,存在几个错误,导致程序出错。下面是修改后的代码,并解释了每个更改的原因:

    # 假设 che_width 和 is_Gaover 已经定义
    
    while is_game:
        if step_count % 2:  # 判断当前是白子(玩家)还是黑子(AI)走棋
            P.ai = AIO
        else:  # 这里应该使用elif而不是else,因为上一行已经处理了步数为偶数的情况
            P.ai2 = AIO
    
        if P.ai in aipe_list or P.ai2 in aipe_list:  # 同时检查两个AI的选择是否正确
            message = Text(Point(300, 300), 'AI gets a wrong next step.')
            message.draw(gw)
            is_game = False
        else:
            # 确保添加正确的AI选择到对应列表
            if step_count % 2:
                ai_list.append(P.ai)
            else:
                ai2_list.append(P.ai2)
    
            # 将AI的选择加入错误列表,以便后续不再重复
            aipe_list.append(P.ai if step_count % 2 else P.ai2)
    
            piece = Circle(Point(che_width * P.ai[0], che_width * P.ai[1]), 16) if step_count % 2 else Circle(Point(che_width * P.ai2[0], che_width * P.ai2[1]), 16)
            piece.setFill('white' if step_count % 2 else 'black')
            piece.draw(gw)
    
            # 检查游戏结束条件,注意列表名是否正确
            if is_Gaover(ai_list if step_count % 2 else pers_list):
                if step_count % 2:
                    message = Text(Point(100, 100), 'AI白子赢了.')
                else:
                    message = Text(Point(100, 100), '你的黑子赢了.')
                message.draw(gw)
                is_game = False
    
        step_count += 1
    

    更改点包括:

    1. 更正了 else 语句,将其替换为 elif,因为之前已经处理了奇数步的情况。
    2. 在判断AI走法是否错误时,同时检查 P.aiP.ai2 是否在 aipe_list 中。
    3. 根据步数奇偶性,分别将AI的选择添加到对应的列表(ai_list 或者 ai2_list)。
    4. 修改了错误信息中的引号类型,确保字符串格式正确。
    5. 当检查游戏结束条件时,根据步数判断使用哪个列表(ai_list 或者 pers_list)。

    这些更改应该解决了您的问题。请确保 che_widthis_Gaover 函数已经被正确定义。如果还有其他问题,请提供关于 che_widthis_Gaover 的更多信息,或者描述具体错误消息,以便我能进一步帮助您。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 5月22日