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

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 关于#ar#的问题:/* User can add his own implementation to report the HAL error return state */(语言-c语言)
  • ¥15 ImportError: DLL load failed while importing _iterative: 找不到指定的模块。
  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多
  • ¥15 相关性分析中,p<0.05, r=0.29,怎么评价相关性呢
  • ¥15 docker部署Mongodb后输入命令报错?
  • ¥15 将下列流程图转变成python程序代码
  • ¥15 我需要全国每个城市的最新小区名字等数据。
  • ¥15 开发一个小区生态的小程序
  • ¥15 如何解决Excel中dependent dropdown list 的问题
  • ¥15 MddBootstrapInitialize2失败