今天大家過得好嗎?昨天加班加到崩潰嗎?
我們今天還是要來學習Python 喔!
讓我們來看看昨天的作業
利用Divide And Conquer Algorithm 來完成計算組合數C(m,n):
想法:
利用二項定理C(m,n)=C(m-1,n)+C(m-1,n-1)
def C(m,n):
if n==0 or m==n:
return 1
elif n==1:
return m
else:
return C(m-1,n)+C(m-1,n-1)
print(C(10,3)) #output:120
print(C(25,10)) #output:3268760
有時候我們會看到下面這個寫法
def difage(m,n):
#計算兩人的年紀差
diff=abs(m-n)
return diff
def sumage(m,n):
#計算兩人的年紀和
tot=abs(m+n)
return tot
#print(difage(62,30))
if __name__ == '__main__':
print(difage(62,30))
我想你可能會發現如果把print(diff(62,30))
的註解拿掉,而把下面的兩行(if ....到結束)註解掉,會有相同的結果!
不知道眼尖的你有沒有發現__name__
好像是一個變數,所以我們先從這裡開始,
我們來看看下面的例子:
def difage(m,n):
diff=abs(m-n)
return diff
print('This __name__ is '+__name__)
if __name__ == '__main__':
print(difage(62,30))
執行後如下:
>>> python age_1.py
This __name__ is __main__
32
執行後你會發現print(__name__)
會回傳'__main__'
,所以當if
成立後,就會往下執行。那我們將這個檔案命名為age_1.py。
我們另外寫一個程式如下命名為,age_2.py,執行後仍然會與age_1.py最後執行的結果一樣。
def difage(m,n):
diff=abs(m-n)
return diff
print('This __name__ is '+__name__)
print(difage(62,30))
我們來看看下面兩個程式碼main_1.py和main_2.py
# main_1.py
from age_1 import difage
print('In main, the __name__ is '+__name__)
print(difage(50,30))
# main_2.py
from age_2 import difage
print('In main, the __name__ is '+__name__)
print(difage(50,30))
以下為執行結果:
>>> python main_1.py
This __name__ is age_1
In main, the __name__ is __main__
20
>>> python main_2.py
This __name__ is age_2
32
In main, the __name__ is __main__
20
沒錯!這就是為什麼要有「if name == 'main'」!
但我們今天就到這裡了!
其他我們留待明天說明啦!