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()