无我

在小学尝试以Python为载体培养学生计算思维

蓝桥杯的一道绘图题目

【提示信息】 

识别出图形中的基本形状,以基本形状为单位绘制出最终图形。 

绘制所示图形,中间是半径为120 的圆,四周是边长为 80 的 12 个菱形。 

【编程实现】 

使用turtle 绘制如图中所示的图形。 

1) 背景为白色,中间圆为红色轮廓线,不填充; 

2) 图中菱形的长对角线延长线经过圆心(如图中虚线所示,虚线不用绘制); 

3) 菱形为黑色轮廓线、黄色填充,其中锐角为 60 度; 

4) 绘图过程中隐藏画笔,能清楚地看到图形绘制过程。


算法思路:

1、显然这是一个12的循环,用for循环即可

2、为了让圆画在中间,可先抬起笔,用goto(0,-120)实现,画完圆再用home()归位。

3、每次循环画完菱形之后,最方便的方法就是抬起笔用home()归位。

4、因为home()归位后会自动恢复角度为0,所以每次循环开始要先设置好不同的角度:

    第1次:0度

    第2次:360/12度

    第3次:360/12*2度

    第4次:360/12*3度

    ……

分析上面的规律可以得出下面的角度设置方法:

    如果循环变量i从0开始:(360/12)*i

    如果循环变量i从1开始:(360/12)*(i-1)



程序代码:

import turtle as t

t.ht()

t.up()

t.goto(0,-120)

t.down()

t.color("red")

t.circle(120)


for i in range(12):

    t.up()

    t.home()

    t.seth(i*(360/12))

    t.fd(120)

    t.down()

    t.color("black","yellow")

    t.begin_fill()

    t.lt(30)

    t.fd(80)

    t.rt(60)

    t.fd(80)

    t.rt(120)

    t.fd(80)

    t.rt(60)

    t.fd(80)

    t.end_fill()

评论
热度 ( 1 )

© 无我 | Powered by LOFTER