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