PYTHON語言簡要回顧


計算機的最重要功能之一就是能夠快速地執行反覆的資料運算工作,這樣就可以大量取代人們的機械性的計算工作。 因此只要我們能夠編寫程式,就能夠快速地取得計算結果,再從結果思考可能的解決方案或現象中影藏的規律。就像電動馬達取代了大量的人力做工,計算機也取代了大量數據運算和數據處理的工作。
不管是哪一種語言,迴圈的運用絕對是最根本的用法,當然還要再搭配邏輯判斷,才能實現各種想法的可能性。在學習python語言的方法當中,最直接有效的途徑就是看樣本程式,在看懂了樣本程式之後,自己在做一些小小的練習,一方面熟悉語法的應用,另一方面可以開始訓練自己的邏輯思維。在這一個小小的回顧當中,我們準備了7個小程式,讓同學們熟悉整個語言的基本要素,這些基本要素都是在未來的課程當中,經常要用到的語法。因此我們邀請各位同學先看一下這些樣本程式,最好能夠用打字的方式在編輯器中打入,這樣可以訓練自己對各個語法的記憶,加強各位同學對PYTHON語法的熟悉程度,並且編寫程式的過程當中難免有打字錯誤或者是邏輯錯誤的情況,這些學習都沒有快速的捷徑,只有靠著自己一步一步的完成程式,改善編輯錯誤,再仔細的觀察執行結果,檢驗是否有邏輯錯誤,最終就能夠得到正確的結果。
希望你會覺得學習計算機與言是一個有趣的事情,much better than playing computer games.
  1. for loop; while loop
  2. if-elif-else
  3. 清單1
  4. 清單2
  5. 利用函數副程式計算n!
  6. 數學函數


1. for-loop; while-loop:


####### 樣本程式: PY-REV-1.py for-loop, while-loop
print ('---this is for-loop---') for i in range(6): print (i,i**2) print ('---this is while-loop---') n=0; sum=0. while n <= 10: #這是邏輯判斷 sum+=n print (n,sum) n+=1


2.if-elif-else:


####### 樣本程式: PY-REV-2.py for-loop, while-loop and if-elif-else
for i in range(20): if(i%4 == 0): print (i,'可被4整除') elif(i%4 == 1): print (i,'被4除餘1') else: if(i < 10): print (i,'被4除餘2或3',i,' < 10') else: print (i,'被4除餘2或3',i,' >= 10')


3. 清單1:


####### 樣本程式: PY-REV-3.py 利用清單與兩個迴圈以及大小交換來完成排序
a=[3,4,1,6,2,7,8,9,5] #直接付與清單元素(在這裡是整數) print ('original a=',a) N=len(a) #清單的元素個數 m=0 while True: #這個迴圈的執行工作由下面的break指令結束 K=0 #K表示交換的次數,在此先歸零 for i in range(N-1): #請注意N-1是必須的 if(a[i+1] < a[i]): #如果後面的元素比前面的元素還要小 a[i],a[i+1]=a[i+1],a[i] #兩個元素交換 K += 1 #交換的次數+1 if(K==0): break #K=0表示在i-loop中都沒有發生做交換的動作,因此while迴圈的工作結束 m += 1 # m=while-loop經過的次數 print (m,K,a) print 'sorted a=',a #a清單已完成從小到大排列


4. 清單2:

####### 樣本程式: PY-REV-4.py append, remove, min and max #利用迴圈我們逐次將a清單中最小的元素定義給b清單
a=[3,4,1,6,2,7,8,9,5] print ('original a=',a) b=[] #宣告一個空白的清單 for i in range(len(a)): b.append(min(a)) #用append指令定義清單元素,min(a)是清單中最小的元素 a.remove(min(a)) #拿掉清單中的某一個元素 print ('a=',a,' b=',b) print ('a is sorted into b=',b) print ('max of b=',max(b)) #max(b)是清單b中最大的元素 #################################################### #下面的程式當中有兩個清單,a清單的元素是整數,b清單的元素是字串。 #當a清單的整數從小到大排列的同時,b清單也做同樣的交換,最後再打印出被排列過的b清單 #################################################### a=[3,4,1,6,2,7,8,9,5] b=['a','student','I','Tunghai','am','University','in','Taichung','of'] print ('original a=',a) N=len(a) m=0 while True: K=0 for i in range(N-1): if(a[i+1] < a[i]): a[i],a[i+1]=a[i+1],a[i] b[i],b[i+1]=b[i+1],b[i] K += 1 if(K==0): break m += 1 print (m,K,a) print ('sorted a=',a) print ('sorted b=',b)


5. 利用函數副程式計算n!

####### 樣本程式: PY-REV-5.py function
def facto(n): if(n==0): return 1 s=1 for i in range(1,n+1): s *= i return s for i in range(11): s=facto(i) print (i,s)



範例程式: 正弦函數(\(\sin(x)\))的級數定義
\( \sin(x)=x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\frac{x^9}{9!}+\cdots=\sum_{n=0}^{\infty}\frac{(-1)^n x^{2n+1}}{(2n+1)!} \)
利用函數程式facto計算n!再按公式做級數求和。

import math

def facto(n):
    if(n==0): return 1
    s=1
    for i in range(1,n+1):
        s *= i
    return s

N=5
sum=0.
x=math.pi/4.
for n in range(N+1):
    sum += (-1.)**n/facto(2*n+1)*x**(2*n+1)
    print (n,sum)
print (x,math.sin(x),sum)


6. 數學函數:

####### 樣本程式: PY-REV-6.py import math
###### 呼叫數學函數模組及其應用 import math #呼叫數學函數模組 pi=math.pi #圓周率 print ('pi=',pi) x=pi/3. deg=math.degrees(x) #將弧度轉為角度 print ('x=',x,' degree of x=',deg) print ('sin(x)=',math.sin(x)) #三角函數 print ('cos(x)=',math.cos(x)) print ('tan(x)=',math.tan(x)) deg2=45. rad2=math.radians(deg2) #將角度轉為弧度 print ('deg2=',deg2,' rad2=',rad2) y=math.atan(rad2) #反三角函數 print ('atan(rad2)=',y) x=1. print ('x=',x,' 自然指數exp(x)=',math.exp(x),' exp(2)=',math.exp(2.)) z=10. print ('z=',z,' 自然對數log(z)=',math.log(10.)) print ('常用對數log10(z)=',math.log10(10.),' log10(12345.)=',math.log10(12345.)) print ('開平方根math.sqrt(100.)=',math.sqrt(100.),'math.sqrt(2.)=',math.sqrt(2.)) x=-10. print ('絕對值:x,math.fabs(x)=',x,math.fabs(x))