5.10

孙锺鸣發表於2024-06-19
要求程式設計輸出如下圖示的字元分形圖形(謝賓斯基三角形),要求提交原始碼檔案,其中原始碼要求逐行註釋。

謝賓斯基三角型字元分形圖形.jpg
複製程式碼
import turtle
# 定義繪製謝賓斯基三角形的函式
def draw_sierpinski_triangle(t, order, size):
    # 遞迴結束條件:如果order為0,則繪製一個等邊三角形
    if order == 0:
        for _ in range(3):
            t.forward(size)
            t.left(120)
    # 否則遞迴繪製三個更小的謝賓斯基三角形
    else:
        draw_sierpinski_triangle(t, order-1, size/2)  # 繪製左下角的小三角形
        t.forward(size/2)
        draw_sierpinski_triangle(t, order-1, size/2)  # 繪製上方的小三角形
        t.backward(size/2)
        t.left(60)
        t.forward(size/2)
        t.right(60)
        draw_sierpinski_triangle(t, order-1, size/2)  # 繪製右下角的小三角形
        t.left(60)
        t.backward(size/2)
        t.right(60)
def main():
    # 設定畫布
    screen = turtle.Screen()
    screen.setup(width=800, height=800)
    screen.title("Sierpinski Triangle")
    # 建立畫筆
    pen = turtle.Turtle()
    pen.speed(0)  # 設定繪製速度為最快
    # 接受使用者輸入,確保輸入的層數在1到9之間
    while True:
        order = int(input("請輸入謝賓斯基三角形的層數 (1-9):"))
        if 1 <= order <= 9:
            break
        else:
            print("輸入錯誤,請輸入1到9之間的數字!")
    # 移動畫筆到初始位置
    pen.penup()
    # 修改初始位置為右下角
    pen.goto(20,200)
    pen.pendown()
    # 調整角度,使得謝賓斯基三角形朝上
    pen.right(120)  # 將角度調整為朝上
    # 繪製謝賓斯基三角形
    draw_sierpinski_triangle(pen, order, 600)
    # 隱藏畫筆
    pen.hideturtle()
    # 顯示繪製結果
    screen.mainloop()
if __name__ == "__main__":
    main()
複製程式碼