猫史档案馆


如何随机绘制10个五角星,并对窗口关闭做异常处理?

用户:江锋老师江锋老师查看:0 回复:4 评论:0 创建时间:2021-04-16T19:29:41


 

import time
import random
import turtle as t
# t = turtle.Pen()

# 绘制五角星
def star(n):

    # t.color()同时控制画笔和填充颜色
    t.color("yellow")
    # t.pencolor("yellow")
    # t.fillcolor("yellow")

    t.begin_fill()

    i = 0
    while i < n:

        # 角度
        angle = 180-180/n

        # forward()
        t.fd(20)

        t.left(angle)
        i = i+1

    t.end_fill()

# 随机坐标
def random_star():

    # 随机数
    x = random.randint(0, 300)
    y = random.randint(0, 300)

    # 抬笔,移动坐标,落笔
    t.penup()
    t.goto(x, y)
    t.pendown()


# 主函数,代码从这里开始执行
if __name__ == "__main__":
    n = 5
    num = 10
    try:
        for i in range(num):
            random_star()
            star(n)

    # 在except 后写上你要捕获的异常 Terminator
    except t.Terminator:
        print('程序中断')

    # 如果不知道程序可能出现的异常,这样写:
    except Exception as e:
        print(str(e))

    # 程序无异常,跳过except,执行finally:
    finally:
        time.sleep(3)
    # t.done()


回复

上一页1 页 / 共 1下一页
AlbertAJLKAlbertAJLK

emotion_编程猫_搓头

点赞0


评论


江锋老师江锋老师

这里为什么不用t.done(),而用time.sleep()

 

一:当程序运行还未结束,手动关闭窗口,会执行t.done()这行代码,导致关闭的窗口会重新弹出来,所以这是一个糟糕的设计;

 

二:窗口长期固定,没有任何意义,不如设置一个暂停3秒,自动关闭窗口。

 

点赞0


评论


江锋老师江锋老师

如何随机绘制任意星星?

if __name__ == "__main__":
    # n = 5
    num = 10
    try:
        for i in range(num):
            random_star()
            n = random.randint(5, 10)
            star(n)

点赞0


评论


江锋老师江锋老师

为什么要使用异常?

因为当程序运行,点击关闭窗口时,程序会报错;

特别注意:这是turtle库 窗口的一个普遍性问题。

报错信息如下:

点赞0


评论