Python(PyScripter)防止"没有响应"运行错误程序

时间:2016-11-25 22:00:45

标签: python turtle-graphics pyscripter

我使用的是Windows 10,PyScripter 2.6,Python 3.4.4。

我是编程的新手。我正在学习python并使用turtle模块创建程序。

乌龟模块创建一个窗口,让海龟绘制你告诉他们在窗口画布上绘制的内容。

当我的乌龟程序出现错误时,乌龟窗口将进入"没有响应"州。它崩溃了。我必须关闭它,它会向Microsoft发送错误报告等等。

我的问题是 ,是否有一些代码或某种方法来阻止"龟背窗口#34;从崩溃到进入"没有回应"状态?

我已尝试过调试和语法检查,但它们无法阻止此问题。

我的一部分告诉我这就是它的方式。如果你编写错误的代码,你的程序就会崩溃,但在开发环境中,似乎有一种方法来处理"处理"用这些东西。

由于 添

代码和错误消息

CODE

def main():
    pass

if __name__ == '__main__':
    main()

import turtle

wn = turtle.Screen()
wn.bgcolor("lightgreen")
wn.title("Tess & Alex")

tess = turtle.Turtle()
tess.color("hotpink")
tess.pensize(5)

alex = turtle.Turtle

tess.forward(80)
tess.left(120)
tess.forward(80)
tess.left(120)
tess.forward(80)
tess.left(120)

tess.right(180)
tess.forward(80)

for x in [0,1,2,3]:
    alex.forward(50)
    alex.left(90)

wn.mainloop()

错误

消息文件名称行位置
回溯
        C:\ py \ 3 \ program1.py 41
TypeError:forward()缺少1个必需的位置参数:'距离'

1 个答案:

答案 0 :(得分:0)

代码中的错误就在这一行:

alex = turtle.Turtle

应该是:

alex = turtle.Turtle()

但是,让我们解决你的更大问题。我认为程序中的简单错误会导致长时间的崩溃,导致很难快速转换调试和测试周期。 (如果不是,请使用当前的引文。)虽然我无法在我的系统上重现这种行为,但我们可以尝试一些东西(仅用于开发,因为如果它存在于完成的代码中,人们会不屑一顾,因为异常是太宽泛了):

import sys
from turtle import Turtle, Screen

try:
    screen = Screen()
    screen.bgcolor("lightgreen")
    screen.title("Tess & Alex")

    tess = Turtle()
    tess.color("hotpink")
    tess.pensize(5)

    for _ in range(3):
        tess.forward(80)
        tess.left(120)

    tess.right(180)
    tess.forward(80)

    alex = Turtle

    for _ in range(4):
        alex.forward(50)
        alex.left(90)

except Exception as e:
    exc_type, exc_obj, exc_tb = sys.exc_info()
    print(exc_type, "Line:", exc_tb.tb_lineno, "\n", e)
    exit()

screen.mainloop()

请注意,我故意保留了您的missing()错误。当这次遇到错误时,在tryexcept内,它应该立即返回:

<class 'TypeError'> Line: 23 
 forward() missing 1 required positional argument: 'distance'
而不是在你身上进入“没有回应”的状态。试一试,如果有帮助,请告诉我们。