python 用turtle库画围棋棋盘和正、余弦函数图形
生活随笔
收集整理的這篇文章主要介紹了
python 用turtle库画围棋棋盘和正、余弦函数图形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.如何畫圍棋棋盤。
圍棋棋盤共有19縱19橫。其中,位于(0,0)的星位叫天元,其余8個星位坐標分別是:(-6,6),(0,6),(6,6),(-6,0),(6,0),(-6,-6),(0,-6),(6,-6)。這里面涉及到繪制等間距網格,我選擇for循環來實現。考慮到以后可以修改棋盤大小,所以網格間距和初始點位置都設置成全局變量。其代碼如下:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書 ''' # 繪制圍棋棋盤import turtle# 線與線間隔 n = 30 # 初始點位置 x = -300 y = -300# 定義棋盤樣式 turtle.speed(3) turtle.pencolor('black') turtle.screensize(400, 400)# 畫橫線 for i in range(19):turtle.penup()turtle.goto(x, y + n * i)turtle.pendown()turtle.forward(n * 18)# 畫豎線 turtle.left(90) for i in range(19):turtle.penup()turtle.goto(x + n * i, y)turtle.pendown()turtle.forward(n * 18)turtle.right(90)# 畫9個星位,每排三個,共三排所以是兩層for循環 x_first = x + n * 3 y_first = y + n * 3 - n * 0.25for i in range(3):for j in range(3):turtle.penup()turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n)# 如果按下面寫法,則先畫左邊3個星,再畫中間3個# turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n)turtle.pendown()turtle.begin_fill()turtle.fillcolor('blue')# 飛星的半徑為1/4個網格間距turtle.circle(n * 0.25)turtle.end_fill()# 隱藏畫筆箭頭 turtle.hideturtle()turtle.done()代碼運行結果如下圖:
題目非常簡單,重點是通過畫圖來感受循環在處理重復性動作時的威力。但凡重復性的工作都可以用循環來處理。這也正是計算機擅長的工作,并且也是程序的意義所在:把人的精力從繁瑣的、海量的、重復性的、簡單的初級工作中解脫出來。
二.繪制正弦、余弦函數。
其核心思想是:放下畫筆,然后讓畫筆依次通過各個坐標點就畫出一條正弦余弦曲線。從這里也可以看出,這也是不斷地重復性工作,重復地計算以x為橫坐標的點的 y 坐標,然后重復地讓畫筆通過這些點。所以我也選用for循環。
當然,代碼中值得關注的就是 x-0-y 坐標系的繪制。這段代碼可以通用。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書 ''' # 在正交坐標系下畫sin(x)和cos(x)曲線import turtle import mathturtle.speed(1)# 畫 x 軸 turtle.penup() turtle.goto(-220, 0) turtle.pendown() turtle.goto(220, 0)# 畫 x 軸箭頭 turtle.setheading(150) turtle.forward(20) turtle.penup() turtle.goto(220, 0) turtle.setheading(-150) turtle.pendown() turtle.forward(20)# 顯示x turtle.penup() turtle.goto(225, 0) turtle.write('X')# 畫 y 軸 turtle.penup() turtle.goto(0, -100) turtle.pendown() turtle.goto(0, 100)# 畫 y 軸箭頭 turtle.setheading(240) turtle.forward(20) turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.setheading(-60) turtle.forward(20)# 顯示Y turtle.penup() turtle.goto(0, 110) turtle.write('Y')# 畫正弦曲線 x = -175 turtle.pensize(2) turtle.color('blue') turtle.penup() turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi)) turtle.pendown() for x in range(-175, 176):turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi))# 將-2π的位置標示出來 turtle.penup() turtle.goto(-100, -20) turtle.write('-2π')# 將2π的位置標示出來 turtle.penup() turtle.goto(100, -20) turtle.write('2π')# 畫余弦曲線 x = -175 turtle.pensize(2) turtle.color('red') turtle.penup() turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi)) turtle.pendown() for x in range(-175, 176):turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi))turtle.hideturtle() turtle.done()運行結果如下:
最后我還是要重復一遍上面的心得:但凡重復性的工作都可以用循環來處理。這也正是計算機擅長的工作,并且也是程序的意義所在:把人的精力從繁瑣的、海量的、重復性的、簡單的初級工作中解脫出來。
應該把精力放在建模和算法優化上。這才是重點和難點。
總結
以上是生活随笔為你收集整理的python 用turtle库画围棋棋盘和正、余弦函数图形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python for循环中累加变量是否要
- 下一篇: 理解 Python 中的 *args 和