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

Spyder运行Python代码时弹出问题报告窗口故障求助

问题定位

代码运行触发Spyder弹出问题报告窗口,核心是两个问题:

  • 语法缩进错误:Python对代码缩进有强制要求,你编写的向上移动(E键)判断分支缩进完全错位,解释器无法正常解析代码,会直接触发运行时错误,在Spyder的集成运行环境下容易连带导致内核崩溃弹窗。
  • Matplotlib运行逻辑错误:你在游戏循环里反复调用阻塞式的plt.show(),该方法默认会暂停主线程等待绘图窗口手动关闭,循环中反复触发绘图阻塞、新建画布的逻辑,很容易导致Spyder的图形渲染后端挂死,触发崩溃提示。
修复后完整代码
import matplotlib.pyplot as plt  
import random  

# 开启Matplotlib交互模式,避免show阻塞主线程
plt.ion()

coords = [random.randint(-5,5), random.randint(-5,5)]  
enemy_coords = [random.randint(-5,5), random.randint(-5,5)]  

# 初始绘图
plt.cla()
plt.plot(coords[0], coords[1], 'bo', enemy_coords[0], enemy_coords[1], 'rx')  
plt.plot([1,2], [3,1])  
plt.xlim(-5,5)  
plt.ylim(-5,5)  
plt.pause(0.1)

slope = (1-3)/(2-1) #=-2  
#y = -2x + 5  
print(slope)  
print('Controls: Up(E), Down(D), Left(W), Right(R)')  

while enemy_coords[0] != coords[0] or enemy_coords[1] != coords[1]:  
    move = str(input(''))  
    move = move.upper()  
    if move == 'E':
        # 修复缩进错误,将分支判断放入E键的逻辑块内
        if coords[0] != -2*(coords[1]) + 5: 
            print('a')  
        else:  
            coords[1] += 1  
    elif move == 'D':  
        coords[1] -= 1  
    elif move == 'W':  
        coords[0] -= 1  
    elif move == 'R':  
        coords[0] += 1  
    else:  
        pass
    
    # 敌人移动逻辑
    if enemy_coords[0] > coords[0]:
        enemy_coords[0] -= 1  
    elif enemy_coords[0] < coords[0]: 
        enemy_coords[0] += 1  
    elif enemy_coords[1] > coords[1]: 
        enemy_coords[1] -= 1  
    elif enemy_coords[1] < coords[1]: 
        enemy_coords[1] += 1  
    
    # 循环内绘图,每次先清空画布再重绘,用pause代替阻塞的show
    plt.cla()
    plt.plot(coords[0], coords[1], 'bo', enemy_coords[0], enemy_coords[1], 'rx')  
    plt.plot([1,2], [3,1])  
    plt.xlim(-5,5)  
    plt.ylim(-5,5)  
    plt.pause(0.1)

# 游戏结束关闭交互模式
plt.ioff()
plt.show()
额外说明
  • 修复后的代码统一了缩进规范,所有分支逻辑层级符合Python语法要求
  • 开启Matplotlib交互模式后,循环内每次重绘只需要短暂暂停刷新画面,不会阻塞输入逻辑,也不会反复触发新窗口导致后端崩溃
  • 新增了画布清空逻辑plt.cla(),避免每次循环绘制的点和线层层叠加在画布上
  • 把无意义的coords = coords替换为pass,减少无效运算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:21:43