2021年11月2日,中的新股上市了,具體是哪個我就不說了。
好不容易上市了,卻趕上了破發(fā)潮,都是-10,-20的大面,本來之前歡歡喜喜的想著可能撈個萬兒八千的,現(xiàn)在卻像是被人搶了一般。
昨天晚上看了好幾遍公司的業(yè)務(wù),想著怎么辦?萬一破發(fā)就拿著,盡管PE有50多,公司的主營看著似乎還行,做的還算是正經(jīng)事。
早上開始瞄了一眼,競價前半段竟然漲了10個點,有點戲。
結(jié)果后半段,又直直往下降,跌了10多個點,心有點涼了,這破發(fā)是板上釘釘了。
開盤沒多久,竟然抖抖的往上漲了,快回本了趕緊掛單賣了,賣完沒多久就突突往下跌,哈哈,還算掙了個雞腿。
沒想到過了十點,瞄了下盤面,竟然又突突往上漲,直接干漲停了,呵呵呵,苦笑三聲。
下午三點多,又去瞄了一眼,還是破發(fā)的狀態(tài),呵呵呵,又是苦笑三聲。
中了個新股,中了個寂寞,沒虧錢竟然還有點開心。

言歸正傳,回到我們的分形教程,我們用的是python的turtle模塊,安裝了python就自帶了這個模塊。
大家打開python自帶的IDE按F1幫助搜索turtle就可以查到幫助文檔。
Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon in 1967.
...
這本來是幫助小朋友學習編程的一個工具,后來被移植到python中,其基本思路就是模擬一個小烏龜在走路,從而繪制成各種圖形。
網(wǎng)上有用turtle畫各種奇怪圖形的網(wǎng)友,大家可以去看看。
尤其是它還包含極坐標,那么就可以做出各種高難度酷炫的動作以及五彩繽紛的色彩。
我大致的數(shù)了下turtle模塊包含的API,差不多100個函數(shù),常用的也就20個不到;只要會編程,上手就是4.9分鐘的事情。
今天我們的教程是一個旋轉(zhuǎn)的直線,它的結(jié)果如下所示:

這個圖形看起來比較簡單,但是它跟漢字里面的“永”一樣,包含了turtle繪圖所需的全部元素:配置,基本圖形,色彩和動畫。
配置
配置指turtle畫布的配置,包括用多大的畫布,什么背景色,用什么坐標系等等,一般我常用下面這幾個函數(shù)。
隱藏小烏龜畫筆,那個小箭頭看起來挺煩的:
turtle.hideturtle()
turtle.ht()設(shè)置桌布的背景色,我一般喜歡用黑色(turtle.bgcolor("black")):
turtle.bgcolor(*args)修改繪圖的速度,如果想要圖形立馬呈現(xiàn)顯示最終結(jié)果,我用 turtle.tracer(0, 0):
turtle.tracer(n=None,?delay=None)設(shè)置桌布窗口的大小,用setup函數(shù),寬width和height我一般用百分比,1.0表示全屏,startx和starty一般用None,表示居中:
turtle.setup(width=_CFG["width"],?height=_CFG["height"],?startx=_CFG["leftright"],?starty=_CFG["topbottom"])
turtle.setup(width=1.0,?height=1.0,?startx=None,?starty=None)基本圖形和色彩
我們要做啥事呢?畫一條帶顏色的直線。
當我們要畫一條直線時,我們怎么做?
- prepare:選擇合適粗細,顏色的筆。
- step 1:下筆。
- step 2:往某個方向移動筆。
- step 3:達到需要的長度時停筆。
- step 4:起筆。
在程序里面怎么做?請您一一對應(yīng)上面的。
- prepare:
turtle.pensize(3)turtle.pencolor('red') - step 1:
turtle.pendown() - step 2:
turtle.seth(angle) - step 3:
turtle.forward(length) - step 4:
turtle.penup()
代碼說明:
| 函數(shù) | 說明 |
|---|---|
| turtle.pensize | 畫筆粗細 |
| turtle.pencolor | 畫筆顏色 |
| turtle.pendown | 下筆 |
| turtle.penup | 起筆 |
| turtle.setheading,turtle.seth | 設(shè)置畫筆角度 |
| turtle.forward,turtle.fd | 往前移動一段距離 |
整合成代碼,就是:
def?draw_line(length,?angle):
????turtle.pensize(3)
????turtle.pencolor('red')
????turtle.pendown()
????turtle.seth(angle)
????turtle.fd(length)
????turtle.penup()動畫
動畫的基本原理就是以超過人眼可以分辨的頻率播放圖片,對吧。
我們怎么讓直線動起來。
- step 1:清屏。
- step 2:畫一條直線。
- step 3:刷新界面。
- step 4:等待X秒(1/X就是刷新頻率)。
- step 5:重復(fù)step 1,2,3,4。
是不是很簡單。

代碼怎么做?
- step 1:
turtle.clear()turtle.goto(0, 0) - step 2:
draw_line(400, angle) - step 3:
turtle.update() - step 4:
time.sleep(0.05) - step 5:
whilefor
代碼說明:
| 函數(shù) | 說明 |
|---|---|
| turtle.clear | 清除屏幕 |
| turtle.goto(0, 0) | 回到原點 |
| turtle.update | 在tracer關(guān)閉時,刷新圖像 |
| time.sleep() | 等待 |
是不是超簡單,把上面代碼整合一把就可以畫出一條旋轉(zhuǎn)的直線了。
#?coding:?utf-8
import?turtle
import?time
turtle.setup(width=1.0,?height=1.0,?startx=None,?starty=None)
turtle.ht()
turtle.tracer(0,?0)
turtle.bgcolor("black")
def?draw_line(length,?angle):
????turtle.pensize(3)
????turtle.pencolor('red')
????turtle.pendown()
????turtle.seth(angle)
????turtle.fd(length)
????turtle.penup()
????
for?angle?in?range(3600):
????turtle.clear()
????turtle.goto(0,?0)
????draw_line(400,?angle)
????turtle.update()
????time.sleep(0.05)
進階
在turtle的函數(shù)中,有一個定時器回調(diào)函數(shù),它在手冊中是這樣描述的:
turtle.ontimer(fun, t=0)
Install a timer that calls fun after t milliseconds.
那么,我們可以在我們的畫圖函數(shù)中調(diào)用這個函數(shù),并且遞歸這個畫圖函數(shù),就可以制造無限循環(huán)了。
我們把上面的函數(shù)做一下簡單的改造:
#?coding:?utf-8
import?turtle
import?time
import?math
turtle.setup(width=1.0,?height=1.0,?startx=None,?starty=None)
turtle.ht()
turtle.tracer(0,?0)
turtle.bgcolor("black")
angle=1
length=400
def?draw_line():
????global?angle
????turtle.clear()
????turtle.goto(0,?0)
????turtle.pensize(3)
????turtle.pencolor('red')
????turtle.pendown()
????turtle.fd(length)
????turtle.seth(angle)
????angle?+=?1
????if?angle?>?360:
????????angle?=?0
????turtle.penup()
????turtle.ontimer(draw_line,?50)
????
draw_line()
到此,一條帶顏色可旋轉(zhuǎn)的直線就做好了,是不是超級簡單。
有了這個基礎(chǔ),我們就可以做一些變化,比如旋轉(zhuǎn)的彩色圓盤,旋轉(zhuǎn)的太極等等,我們后面再做。
--EOF--
例行求粉,謝謝!

本文使用 文章同步助手 同步