用Python的turtle模块绘制国旗

"""
用Python的turtle模块绘制国旗
"""
import turtle


def draw_rectangle(x, y, width, height):
    """绘制矩形"""
    turtle.goto(x, y)
    turtle.pencolor('red')
    turtle.fillcolor('red')
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(width)
        turtle.left(90)
        turtle.forward(height)
        turtle.left(90)
    turtle.end_fill()


def draw_star(x, y, radius):
    """绘制五角星"""
    turtle.setpos(x, y)
    pos1 = turtle.pos()
    turtle.circle(-radius, 72)
    pos2 = turtle.pos()
    turtle.circle(-radius, 72)
    pos3 = turtle.pos()
    turtle.circle(-radius, 72)
    pos4 = turtle.pos()
    turtle.circle(-radius, 72)
    pos5 = turtle.pos()
    turtle.color('yellow', 'yellow')
    turtle.begin_fill()
    turtle.goto(pos3)
    turtle.goto(pos1)
    turtle.goto(pos4)
    turtle.goto(pos2)
    turtle.goto(pos5)
    turtle.end_fill()


def main():
    """主程序"""
    turtle.speed(12)
    turtle.penup()
    x, y = -270, -180
    # 画国旗主体
    width, height = 540, 360
    draw_rectangle(x, y, width, height)
    # 画大星星
    pice = 22
    center_x, center_y = x + 5 * pice, y + height - pice * 5
    turtle.goto(center_x, center_y)
    turtle.left(90)
    turtle.forward(pice * 3)
    turtle.right(90)
    draw_star(turtle.xcor(), turtle.ycor(), pice * 3)
    x_poses, y_poses = [10, 12, 12, 10], [2, 4, 7, 9]
    # 画小星星
    for x_pos, y_pos in zip(x_poses, y_poses):
        turtle.goto(x + x_pos * pice, y + height - y_pos * pice)
        turtle.left(turtle.towards(center_x, center_y) - turtle.heading())
        turtle.forward(pice)
        turtle.right(90)
        draw_star(turtle.xcor(), turtle.ycor(), pice)
    # 隐藏海龟
    turtle.ht()
    # 显示绘图窗口
    turtle.mainloop()


if __name__ == '__main__':
    main()

### 使用 Python Turtle 绘制巴勒斯坦国旗 为了实现这一目标,可以按照巴勒斯坦国旗的颜色和布局来编写代码。该旗由三个水平条纹组成——顶部为黑色,中间为白色,底部为绿色;以及一个红色三角形位于旗帜左侧。 以下是具体的代码实现: ```python import turtle def draw_palestinian_flag(): screen = turtle.Screen() screen.title("Palestinian Flag") flag_turtle = turtle.Turtle() flag_turtle.speed(0) width, height = 600, 400 horizontal_strip_height = height / 3 # 设置背景颜色并移动到起始位置 flag_turtle.penup() flag_turtle.goto(-width/2, height/2) colors = ["black", "white", "green"] for color in colors: flag_turtle.pendown() flag_turtle.color(color) flag_turtle.begin_fill() for _ in range(2): flag_turtle.forward(width) flag_turtle.right(90) flag_turtle.forward(horizontal_strip_height) flag_turtle.right(90) flag_turtle.end_fill() flag_turtle.penup() flag_turtle.sety(flag_turtle.ycor() - horizontal_strip_height) # 绘制红色三角形部分 triangle_side_length = (height * math.sqrt(3)) / 2 flag_turtle.penup() flag_turtle.home() flag_turtle.left(60) flag_turtle.backward(triangle_side_length / 2) flag_turtle.right(60) flag_turtle.pendown() flag_turtle.color('red') flag_turtle.begin_fill() for i in range(3): flag_turtle.forward(height) flag_turtle.right(120) flag_turtle.end_fill() screen.mainloop() draw_palestinian_flag() ``` 这段程序首先设置了画布大小与标题[^1]。接着定义了一个函数 `draw_palestinian_flag` 来完成绘图工作。通过循环依次填充三种不同颜色的矩形区域表示横条,并计算出合适的尺寸比例以适应屏幕显示[^2]。最后,在适当的位置上添加了代表性的红色等边三角形[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值