日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

蓝桥杯Python初级组测试题之Turtle画图

發布時間:2024/3/12 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯Python初级组测试题之Turtle画图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

藍橋杯Python初級測試題之Turtle畫圖

寫這個主要是為了輔助和講解過藍橋杯的初級測試,難度并不高,重點在于解析過程。

  • 畫圓形和以及菱形陣列

    思路:
    第1步: 設置整體參數,如循環畫菱形的次數為n=12,每次旋轉的角度angle
    第2步: 設置畫筆顏色為紅,畫半徑120圓
    第3步: 回到圓心,按照n做循環,
    第4步: 設置畫筆為綠色,填充為黃色,拆分畫菱形的步驟進行循環
    第4步菱形步驟拆解,這個很重要,因為是12個循環步驟,主要每次出發相對的方向是一致的,那么操作就只用寫好0°的就可以了。
  • import turtle as t # 第1步: 設置繪制次數以及每次旋轉角度,題目要求隱藏畫筆 times = 12 angle = 360 / times t.hideturtle() # 第2步: 設置畫筆顏色為紅,畫半徑120圓,先移動120距離方便畫圓 t.pencolor("red") t.penup() t.goto(0, -120) t.pendown() t.circle(120) # 第3步: 回到圓心,按照n做循環,設置線條顏色為黑色,填充顏色為黃色 t.penup() t.home() t.color("black", "yellow") # 第4步: 拆分畫菱形的步驟進行循環 for i in range(times):# 次增加1個分割角度anglet.seth(angle * i)t.penup()t.forward(120)t.pendown()# 繪制菱形,左轉30,走80,右轉60,走80,再右轉120,走80,再右轉60,走80,回到起點# 以上可以在0°時,用筆試畫一下t.begin_fill()t.left(30)t.forward(80)t.right(60)t.forward(80)t.right(120)t.forward(80)t.right(60)t.forward(80)t.end_fill()# 回原點t.penup()t.home() #結束繪圖 t.done
  • 畫二叉樹

    動作分解: 每次分叉都是原來的一支分為兩支,看上去是一個遞歸動作,角度看差不多,先按60°作為初始,題目也不明確要求角度
    思路:1.設計一個遞歸的分叉函數,起始點都在中心往平分方向,往左走到分叉點記錄坐標和朝向x,y,heading為一個數組pos1,增加到坐標點數組中;再回到起始點往右走到分差點記錄坐標和朝向x,y,heading為一個數組pos2,每一層都從哪輸入的數組參數中提取坐標和朝向作為新的起始點完成一次畫二叉樹的操作。邏輯比較清晰,但是寫起來比較麻煩。
    用到的三個取分叉點位置和方向的關鍵函數:
    turtle.xcor() 返回海龜的 x 坐標
    turtle.ycor() 返回海龜的 y 坐標
    turtle.heading() 返回海龜的朝向
    用到的三個設置分叉點位置和方向的關鍵函數:
    turtle.setx(x) 參數x – 一個數值 (整型或浮點型) 設置海龜的橫坐標為 x,縱坐標保持不變。
    turtle.sety(y) 參數y – 一個數值 (整型或浮點型) 設置海龜的縱坐標為 y,橫坐標保持不變。
    turtle.seth(to_angle)參數to_angle – 一個數值 (整型或浮點型) 設置海龜的朝向為 to_angle
  • import turtle as t# 定義初始邊長和角度 leng = 60 angle = 60 # 初始化角度向上 t.seth(90)# 定義一個子函數,從輸入的數組[[X,Y,heading]]提取多個點坐標和方向用于畫二叉樹 # 同時把二叉樹的兩個樹杈點和方向存到數組里 def draw_ercha(l1, list_posx=[[]]):# 如果輸入點數組為空,則結束函數返回空數組if len(list_posx) == 0:return list_posxlist_posx2 = []for ls in list_posx:x = ls[0]y = ls[1]ang = ls[2]t.setx(x)t.sety(y)t.seth(ang)t.pendown()t.left(angle / 2)t.forward(l1)# 存儲左上角點坐標和方向pos1 = [t.xcor(), t.ycor(), t.heading()]t.penup()t.forward(l1 * -1)t.pendown()t.right(angle)t.forward(l1)# 存儲右上角點坐標和方向pos2 = [t.xcor(), t.ycor(), t.heading()]t.penup()# 回到起始點t.forward(l1 * -1)t.left(angle / 2)list_posx2.append(pos1)list_posx2.append(pos2)return list_posx2# 用一個點數組記錄每次畫叉的起點 # 第一次起點為0,0且只有1個點,分叉次數為4 times = 4 run = 1 list_pos = [[0, 0, 90]] # 畫第一個二叉樹,返回數頂部的兩個點位置和方向 list_pos = draw_ercha(leng, list_pos) while len(list_pos) > 0 and run < times:# 每層分支長度減6leng -= 6list_pos = draw_ercha(leng, list_pos)run += 1

    畫出的效果如下,與題目要求類似:

    總結

    以上是生活随笔為你收集整理的蓝桥杯Python初级组测试题之Turtle画图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。