yueyingzhilan 2022-10-31 18:13 采纳率: 100%
浏览 34
已结题

pycharm——python,问题出在哪儿

代码能跑但是报错

# -*- coding:utf-8 -*-
import turtle
turtle.color('Blue')
turtle.setup(800, 500)
turtle.penup()
turtle.goto(-300, 100)
turtle.pendown()
turtle.pensize(3)
a = [0, 60, -120, 60]

def koch(len, n, anglelist):
    """
    绘制n阶科赫曲线
    :param len: 边长
    :param n: 阶数
    :param anglelist: 角度列表
    :return: 空
    """
    if n == 0:
        turtle.fd(len)
    else:
        for angle in anglelist:
            turtle.left(angle)
            koch(len / 3, n - 1, anglelist)


koch(300, 3, a)
turtle.penup()
turtle.goto(-300, 0)
turtle.pendown()
koch(300, 4, a)
turtle.penup()
turtle.goto(-300, -100)
turtle.pendown()
koch(300, 5, a)
turtle.done()


报错:
D:\python\venv\Scripts\python.exe D:\python\科赫曲线.py
Traceback (most recent call last):
File "D:\python\科赫曲线.py", line 35, in
koch(300, 5, a)
File "D:\python\科赫曲线.py", line 24, in koch
koch(len / 3, n - 1, anglelist)
File "D:\python\科赫曲线.py", line 24, in koch
koch(len / 3, n - 1, anglelist)
File "D:\python\科赫曲线.py", line 24, in koch
koch(len / 3, n - 1, anglelist)
[Previous line repeated 1 more time]
File "D:\python\科赫曲线.py", line 23, in koch
turtle.left(angle)
File "", line 8, in left
File "C:\Users\86180\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 1700, in left
self._rotate(angle)
File "C:\Users\86180\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 3278, in _rotate
self._update()
File "C:\Users\86180\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 2661, in _update
self._update_data()
File "C:\Users\86180\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 2647, in _update_data
self.screen._incrementudc()
File "C:\Users\86180\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 1293, in _incrementudc
raise Terminator
turtle.Terminator

Process finished with exit code 1

  • 写回答

2条回答 默认 最新

  • JarodYv 人工智能领域新星创作者 2022-10-31 19:12
    关注

    我在我的电脑上运行没有问题。

    考虑是不是栈溢出。因为画科赫雪花需要大量递归,递归会占用大量栈空间,如果栈的大小不够就容易栈溢出从而导致程序退出。

    一个简单的方法可以验证是不是栈溢出,将koch(300, 5, a)注释掉,看运行会不会报错。因为5阶科赫雪花递归深度很深。

    如果确认是栈移除,那在将运行环境的栈开大一点(我不清楚你的运行环境是怎样的)

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

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 修改了问题 10月31日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: