2016年12月20日 星期二

Python 程式好好玩( 第一講 )

線上編輯器〖repl.it : python3〗注意:不能直接執行【小烏龜】繪圖板  
ANACONDA 編輯器下載  

【對於初學者而言,該如何理解海龜繪圖法?使用程式庫的人其實就是海龜,而海龜不懂數學...】站在不懂程式的海龜角度來看,要使用程式碼來實作單位向量、繞軸旋轉的座標計算,看來是有點複雜呢?...
如果你用過任何程式語言內建的繪圖程式庫,會知道就算想要畫一條線,至少須懂得繪圖時的座標系統、基本的繪圖物件初始化作法,以及如何呼叫畫線函式等。

而使用海龜繪圖,可以讓程式初學者在不懂數學,連繪圖程式庫也不用瞭解的情況下,只要利用程式語言中基本的重複結構,就能得到立即的圖樣回饋。就這方面來說,海龜繪圖其實是封裝的絕佳範例,將一切隱藏在海龜體內。

如果想實作一隻在沙灘上移動的海龜,海龜體內須藏有目前位置的座標,以及目前相對於直角座標中某個軸的角度(通常是X軸),這樣才能知道海龜的頭朝向哪個方向。

而如果海龜轉彎了,那就是目前角度加上轉彎角度,以作為海龜轉彎後的新角度。

如果海龜移動L長度,新座標可以用基本的三角函式來計算,這並不難,X方向移動的長度,會是L乘上目前角度的餘弦值,Y方向移動長度,會是L乘上目前角度的正弦值,兩個值各與目前x、y座標值相加,就好了。

為了能在移動過的路徑上畫線,移動前,要記錄目前座標值,接著,取得移動後的座標值,然後,用這兩個座標值呼叫繪製直線的函式。
無論海龜要畫的圖案有多複雜,基本上,就是重複地運用以上的流程及數學運算了。...

然而,每次海龜的某個動作,都會是某種重複的計算流程,只要將這些流程定義完成,再複雜的圖案,就可以重複地運用這些定義來構造。
進一步地,若站在3D海龜實作者的角度來看,在使用程式碼實作向量運算、繞軸轉動之類的數學公式,不也就是在重複地運用數學方面的模式嗎?】
# EX 01:練習字串的組合
str_a = (' I am Mark ')
str_b = (' Hello world ! ')
print ( str_b + str_a )

提示:符號【+】:除了是邏輯運算符號外,也能用在 字串( str ) 的組合上。
# Ex 02:練習將三個變數設定成同一值( 此處是20 )後進行邏輯運算;完成後再轉換成字串型態,並加上ok字樣後(使用 + 號),列印到螢幕上。
a = b = c = 20
print (str((a + 5) * b - c) + 'ok')

講義區塊(基本指令):

資料類型轉換指令:

  • int ():將資料轉換成整數
  • float () :將資料轉換成 浮點數 
  • str () :將資料轉換成 字串  

輸出指令:

  • Print ():將資料列印到螢幕上  【PS : Amy 的家庭作業在課本的P26 ~ P29
  • Type () :取得資料型態

運算(方式)

  • +:加號
  •  -:減號
  •  *:乘
  •  /:除
  • **:次方,如:7**2 就是 7^2
  • pow (x,y)次方函數 , 如:x 的 y 次方

堆積木:模組的使用

  • 小烏龜繪圖板  turtle

import turtle
t = turtle.Pen()
# Ex 03 請將後續括號內的資料,以三行列印的螢幕上:【Hello ! I'm Mark . Happy new year ~】

# tip : 請用 \n (強制換行)控制項。

str_EX03 = "Hello ! \nI'm Mark . \nHappy new year ~"
print ( EX03 ) 
 # Ex 04 請將後續括號內的資料,以三行列印的螢幕上:【Hello ! I'm Mark . Happy new year ~】
# tip : 請比較本範例與 Ex 03 不同之處
print ( "Hello ! \nI'm Mark . \nHappy new year ~" )
# 備註:列印與搜尋時,可用萬用字元作為索引項 :【*(字串)】【 ?(字元)】
# Ex 05 若一等差數列中 a7 項為 10 ,試求 a3 + a11 = ?
d = 1 #設定公差為1

a7 = 10 #依題意將 a7 項目設定為 10

a1 = 10 - 6 * d # 依題意列出首項( a1 )的推算式

a3 = a1 + 2 * d # 

a11 = a1 + 10 * d #

Print ( a3 + a11 )