You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写井字棋游戏修改网格列表时非数字输入崩溃问题求解

井字棋代码问题修复方案

现有代码核心问题

  • 输入转换异常未处理:直接使用int(input())时,若用户输入非数字内容会抛出ValueError异常,导致程序直接崩溃
  • 输入校验逻辑完全错误:isinstance(choose, int) not in grid语义不成立,isinstance返回的是布尔值,无法通过该判断校验输入是否为合法数字
  • 索引类型错误:input()默认返回字符串类型,直接使用grid[choose]会因为索引必须为整数类型抛出报错
  • 无格子占用校验:未判断用户选择的位置是否已经落子,会导致已占用的格子被重复覆盖
  • 落子逻辑冗余:不需要调用replace方法,直接给列表对应索引赋值即可

修复后可运行代码

grid = [" ", "1", "2", "3", "4", "5", "6", "7", "8", "9"]                       
def grids():                                                                   
    print(grid[1] + " | " + grid[2] + " | " + grid[3])                        
    print("---------")
    print(grid[4] + " | " + grid[5] + " | " + grid[6])
    print("---------")                             
    print(grid[7] + " | " + grid[8] + " | " + grid[9])                            

# 默认先手为X
picked = "X"                                                                                         

while True:                                                                      
    grids()                                                                           
    choose = input(f"choose a number and place your {picked}:")
    
    # 输入合法性校验
    try:
        choose_num = int(choose)
    except ValueError:
        print("wrong input, please input a number between 1-9, try again")
        continue
    
    # 判断数字是否在1-9范围内
    if choose_num < 1 or choose_num >9:
        print("number must be between 1-9, try again")
        continue
    
    # 判断格子是否已被占用
    if grid[choose_num] in ("X", "O"):
        print("this position is already taken, try again")
        continue
    
    # 落子
    grid[choose_num] = picked
    
    # 切换玩家
    picked = "O" if picked == "X" else "X"
    
    # 可自行补充胜负判断、平局判断逻辑结束循环

关键修改说明

  • 用try...except ValueError捕获非数字输入的异常,输入非法时仅提示重试,不会导致程序崩溃
  • 分三层校验输入合法性:先校验是否为数字、再校验是否在1-9区间、最后校验对应位置是否未被占用,完全覆盖异常输入场景
  • 简化落子逻辑,直接给列表对应索引赋值为当前棋子,去除冗余的replace调用
  • 新增玩家切换逻辑,符合井字棋轮流落子的规则
  • 新增网格分隔线,优化界面显示效果

内容的提问来源于stack exchange,提问作者tim_hendrix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:36:03