一、前言
學習就是一個不斷的自下而上,自上而下的過程。
前段時間,學著用python實現網站的數據爬取,隱約get到python的一些語法和用法,感覺就是語法不難,關鍵在于解決問題的思維。
這是需求驅動后的學習。接下來,就需要對python進行系統地了解。
很早之前搜知乎的時候,就搜到MOOC上的一門《python語言程序設計》課程,講得很好,而且,我還下載了課件,溜了一遍,感覺就挺有趣的。
趁著有了實戰經驗,就把這門入門課刷了一遍。果然是門好課!很適合小白入門,并系統學習,整個教學過程循序漸進,深入淺出,提綱挈領,很有意思!
課程是北京理工大學嵩天老師的《python語言程序設計》課程,現在已經開了11次課了。課程每個小視頻短則幾分鐘,最長也不超過20分鐘,不容易勸退。每章講解有復習回顧及小結,在平臺python123上有每章的練習和測試,直接反饋結果,激發繼續學下去的興趣。
個人感覺,老師說話速度慢了些,調成了2倍速播放,然后,花了大約3天的時間,把所有的視頻,課件,練習和測試都刷了一遍,感覺對python的了解更系統了!
趁熱打鐵,把每章的知識點和練習、測試再進行整理回顧一下。
以下內容均來自課程:《python語言程序設計》 及平臺python123,感興趣的看課程視頻,親自練習,效果更好~
二、知識點
1. 深入理解Python語言
-
計算機技術的演進過程:現在為新計算時代
年份 時代 問題 2017-至今 人工智能時代 人類的問題 2008-2016 復雜信息系統時代 數據問題 1981-2008 網絡和視窗時代 交互問題 1946-1981 計算機系統結構時代 計算能力問題 -
不同編程語言的初心和適用對象
編程語言 學習內容 語言本質 解決問題 適用對象 C 指針、內存、數據類型 理解計算機系統結構 性能 計算機類專業
| Java | 對象、跨平臺、運行時 | 理解主客體關系 | 跨平臺 | 軟件類專業 |
| C++ | 對象、多態、繼承 | 理解主客體關系 | 大規模程序 | 計算機類專業 |
| VB | 對象、按鈕、文本框 | 理解交互邏輯 | 桌面應用 | 不確定 |
| Python | 編程邏輯、第三方庫 | 理解問題求解 | 各類問題 | 所有專業 |
-
Python語言的特點
①Python語言是通用語言、腳本語言、開源語言、跨平臺語言、多模型語言;
②Python特點與優勢:語法簡潔(C代碼量的10%;強制可讀性;較少的底層語法元素;多種編程方式;支持中文字符);生態高產(15萬第三方庫;快速增長的計算生態;避免重復造輪子;開放共享;跨操作系統平臺);
③“超級語言”的誕生:機器語言→匯編語言→高級語言→超級語言;python是唯一的“超級語言”;
2. 實例2:Python蟒蛇繪制
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor('purple')
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()
3. turtle庫的使用
-
turtle庫基本介紹
①turtle(海龜)庫:是turtle繪圖體系的Python實現;Python語言的標準庫之一;入門級的圖形繪制函數庫;
②turtle繪圖體系:1969年誕生,主要用于程序設計入門;
③標準庫:隨解釋器直接安裝到操作系統中的功能模塊;
④第三方庫:需要經過安裝才能使用的功能模塊;
turtle繪圖窗體布局
- turtle空間坐標體系
- turtle角度坐標體系
-
RGB色彩體系
①RGB每色取值范圍0-255整數或0-1小數
②默認采用小數值,可切換為整數值:
turtle.colormode(mode)
,其中mode
包括1(RGB小數值模式);255(RGB整數值模式);
4. turtle程序語法元素分析
庫的引用與import:
import <庫名>
;import <庫名> as <庫別名>``from <庫名> import <函數名>
;from <庫名> import *
;-
turtle畫筆控制函數:
①.
penup()
: 別名pu()
, 抬起畫筆,海龜在飛行;
②.pendown()
: 別名pd()
, 落下畫筆,海龜在爬行;
③.pensize()
: 別名width()
, 畫筆寬度,海龜的腰圍;
④.pencolor()
: 畫筆顏色,海龜在涂裝;例如,turtle.pencolor(‘purple’)
,turtle.pencolor(0.63,0.13,0.94)
,turtle.pencolor((0.63,0.13,0.94))
-
turtle運動控制函數:控制海龜走直線還是走曲線
①.
fd(d)
: 別名forward(d)
, 向前行進,海龜走直線;d
為行進距離,可以為負數;②.
circle(r, extent=None)
: 根據半徑繪制extent
角度的弧形;r
為默認圓心再海龜左側r
距離的位置;extent
為繪制角度,默認是360度整圓;
-
turtle方向控制函數:控制海龜面對方向
①. 絕對角度:
turtle.setheading(angle)
, 別名turtle.seth(angle)
,改變行進方向,海龜走角度;
②. 海龜角度:turtle.left(angle)
,海龜向左轉;turtle.right(angle)
,海龜向右轉;angle
為海龜當前行進方向上旋轉的角度;
循環語句:按照一定次數循環執行一組語句;
range()函數:產生循環計數序列;
range(N)
:產生0到N-1的整數序列,共N個;range(M,N)
:產生M到N-1的整數序列,共N-M個;
三、練習
1. 實例2: Python蟒蛇繪制
同上
2. turtle正方形繪制
描述:使用turtle庫,繪制一個正方形。
import turtle as t
t.setup(900,900)
t.pensize(5)
for i in range(0,4):
t.fd(200)
t.right(90)
t.fd(200)
t.done()
3. turtle六邊形繪制
描述:使用turtle庫,繪制一個六邊形。
import turtle as t
t.setup(900,900)
t.penup()
t.fd(-200)
t.pendown()
t.pensize(5)
for i in range(0,6):
t.fd(200)
t.left(60)
t.done()
4. turtle疊邊形繪制
描述:使用turtle庫,繪制一個疊邊形,其中,疊邊形內角為100度。
import turtle as t
t.setup(900,900)
t.pensize(5)
for i in range(0,9):
t.fd(200)
t.left(80)
t.done()
5. turtle風輪繪制
描述:使用turtle庫,繪制一個風輪效果,其中,每個風輪內角為45度,風輪邊長150像素。
提示:turtle.goto(x,y)函數,能夠將turtle畫筆移動到坐標(x,y)
import turtle as t
t.setup(500,500)
t.pensize(4)
t.goto(0,150)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(150,0)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(0,-150)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(-150,0)
t.circle(-150,45)
t.goto(0,0)
四、測試
1.選擇題
-
哪個選項不能正確引用turtle庫進而使用setup()函數?
A import setup from turtle
B from turtle import*
C import turtle as t
D import turtle
import只有三種使用方法,以turtle庫為例:
import turtle
from turtle import setup 或 from turtle import *
import turtle as t (其中t是別名,可以更換其他名稱)
-
關于turtle庫,哪個選項的描述是錯誤的?
A turtle坐標系的原點默認在屏幕左上角
B turtle庫是一個直觀有趣的圖形繪制函數庫
C turtle庫最早成功應用于LOGO編程語言
D turtle繪圖體系以水平右側為絕對方位的0度
turtle坐標系的原點默認在窗體正中間
-
哪個選項是turtle繪圖中角度坐標系的絕對0度方向?
A 畫布正下方 B 畫布正右方 C 畫布正上方 D 畫布正左方
坐標系類似這樣,角度坐標系的絕對0度方向是右側
-
哪個選項是下面代碼的執行結果?
turtle.circle(-90,90)
A 繪制一個半徑為90像素的弧形,圓心在小海龜當前行進的左側
B 繪制一個半徑為90像素的整圓形
C 繪制一個半徑為90像素的弧形,圓心在小海龜當前行進的右側
D 繪制一個半徑為90像素的弧形,圓心在畫布正中心
circle(x, y) 表示 以x長度為半徑,y為角度,當前方向左側x出為圓心,畫圓。其中x和y都可以是負數,相應取反。
-
關于turtle庫繪圖函數,哪個選項的描述是錯誤的?
A turtle.seth(to_angle)函數的作用是設置小海龜當前行進方向為to_angle,to_angle是角度的整數值
B turtle.circle(radius, extent=None)函數的作用是繪制一個橢圓形,extent參數可選
C turtle.fd(distance)函數的作用是向小海龜當前行進方向前進distance距離
D turtle.pensize(size)函數的作用是改變畫筆的寬度為size像素
circle()函數不能繪制橢圓形。
-
關于turtle庫的畫筆控制函數,哪個選項的描述是錯誤的?
A turtle.width()和turtle.pensize()都可以用來設置畫筆尺寸
B turtle.colormode()的作用是設置畫筆RGB顏色的表示模式
C turtle.pendown()作用是落下畫筆,并移動畫筆繪制一個點
D turtle.penup()的別名有turtle.pu(),turtle.up()
turtle.pendown()只是放下畫筆,并不繪制任何內容。
-
哪個選項不能改變turtle畫筆的運行方向?
A left() B bk() C right() D seth()
bk()只能后退,但不改變方向,"后退"不是"轉向"。
-
哪個選項所列保留字能夠實現對一組語句的循環執行?
A while和def B if和else C for和in D range()
循環相關保留字是:for..in和while,但def用于定義函數,不相關。
-
哪個選項能夠使用turtle庫繪制一個半圓形?
A turtle.circle(100) B turtle.circle(100, -180)
C turtle.circle(100, 90) D turtle.fd(100)
circle(x,y)函數的用法,繪制半圓,第二個參數y是180的奇數倍。
-
哪個選項對turtle.done()的描述是正確的?
A turtle.done()放在代碼最后,是turtle繪圖的必要要求,表示繪制完成 B turtle.done()用來隱藏turtle繪制畫筆,一般放在代碼最后
C turtle.done()用來停止畫筆繪制,但繪圖窗體不關閉
D turtle.done()用來暫停畫筆繪制,用戶響應后還可以繼續繪制
建議在每個turtle繪圖最后增加turtle.done()。
2.程序設計題
- turtle八邊形繪制
描述:使用turtle庫,繪制一個八邊形。
import turtle as t
t.pensize(2)
for i in range(0,8):
t.fd(100)
t.left(45)
- turtle八角圖形繪制
描述:使用turtle庫,繪制一個八角圖形。
import turtle as t
t.pensize(2)
for i in range(0,8):
t.fd(150)
t.left(135)
【筆記】《python語言程序設計》—Python基本語法元素