SlideShare a Scribd company logo
1 of 16
Download to read offline
第 三 講
用 數 學 寫 程 式
python 程式設計
python 簡要講義
國立中央大學數學系 吳維漢
學好程式的關鍵 : 善用數學推導
2
 先想清楚再動手撰寫
 利用數學思維於紙筆上推導
 將複雜問題簡化成系列的漸進式題組,然後逐步克服
 與人討論可破除思考盲點,但程式仍需自己完成
 寫程式通常會出錯,很少有一路順利完成程式
 留意解譯器產生的錯誤訊息
 看懂他人程式後,冷卻後重頭撰寫
 試著變化已完成的程式問題,再次練習
 多多找尋題目挑戰自己
 精神不濟時避免練習程式,徒然浪費時間
 學好程設就要經常練習,別無他法
 https://stackoverflow.com/
3 用數學寫程式
三角數字塔 (一)
33 用數學寫程式
三角數字塔 (二)
43 用數學寫程式
while True :
n = int( input("> ") )
# 大縱向
for s in range(n) :
# 小縱向
for i in range(n) :
print( " "*((n-1-s)*n) , end="" )
# 大橫向
for t in range(s+1) :
print( " "*(n-1-i)+str(i+1)*(2*i+1)+
" "*(n-1-i) , end="" )
print()
print()
當程式問題有些複雜,找不出清楚的規律,此時可將問題簡化到可完成的小問題,
然後由此小問題逐步加入條件,循序漸進完成程式設計。
三角數字塔 (三)
53 用數學寫程式
 分解步驟:
1.列印一個數字三角形,但將三角形當成矩形列印,也就是包含
數字前後的空格,先以橫線替代,以下 n = 4 為例:
2.列印一排數字矩形:
---1---
--222--
-33333-
4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
三角數字塔 (四)
63 用數學寫程式
3.列印 n 排數量遞增的數字矩形:
---1---
--222--
-33333-
4444444
---1--- ---1---
--222-- --222--
-33333- -33333-
4444444 4444444
---1--- ---1--- ---1---
--222-- --222-- --222--
-33333- -33333- -33333-
4444444 4444444 4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
4.在每排數字矩形之前增加若干個空格,
以星號替代。
************---1---
************--222--
************-33333-
************4444444
********---1--- ---1---
********--222-- --222--
********-33333- -33333-
********4444444 4444444
****---1--- ---1--- ---1---
****--222-- --222-- --222--
****-33333- -33333- -33333-
****4444444 4444444 4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
山水圖案 (一)
73 用數學寫程式
山水圖案 (二)
83 用數學寫程式
while True :
n = int( input("> ") )
# 山
for i in range(n) :
for j in range(-n+1,n) :
s = abs(j) # 山高至頂端距離
h = n - s # 山高
w = 2 * ( n - abs(j) ) # 山寬
t = i - s # 山頂往下距離
if i < s :
print( " "*w , end="" )
else :
print( " "*(n-1-i)+"/"+"*"*(2*t)+""+
" "*(n-1-i) , end="" )
print()
山水圖案 (三)
93 用數學寫程式
# 水
for i in range(2) :
for j in range(-n+1,n) :
w = 2*(n-abs(j))
print( "~"*w , end="" )
print()
print()
山水圖案 (四)
103 用數學寫程式
 分解步驟:
1. 用矩形方式產生高度為 n 的山,即同時列印山的前後空格,
先以橫線替代。
2. 若 s 為山高到頂端距離,輸入 s,以矩形方式印出此山,
此矩形包含山高到頂端。以下為山高 n = 6 時, s 分別
為 1 與 2 的圖形。
-----/-----
----/**----
---/****---
--/******--
-/********-
/**********
> 1 > 2
---------- --------
----/---- --------
---/**--- ---/---
--/****-- --/**--
-/******- -/****-
/******** /******
山水圖案 (五)
113 用數學寫程式
3. 讓 s 由 0 1 2 依次變化,橫向印出三座山,相鄰兩山的空格暫以
不同符號替代,以資區分。
4. 設定 j 迴圈為 for j in range(-n+1,n) ,取其絕對值為 s,
仿上題印出所有的山,再加上兩排 ~ 底線即可完成程式。
-----/-----++++++++++--------
----/**----++++/++++--------
---/****---+++/**+++---/---
--/******--++/****++--/**--
-/********-+/******+-/****-
/**********/********/******
行道樹 (一)
123 用數學寫程式
行道樹 (二)
133 用數學寫程式
while True :
n = int( input("> ") )
a = 3 * n + 2
for i in range(a) :
for j in range(-n+1,n) :
s = abs(j) # 樹與中間樹單位距離
f = n - s # 樹幹高
h = 2 * n + 1 - 2 * s # 樹身高
w = 4 * ( n - s ) + 1 # 樹身底寬
d = 3 * s # 樹稍與頂部距離
if i < d :
print( " "*w , end=" " )
elif i < d+h :
print( " "*(d+h-i-1)+"*"*(2*(i-d)+1)+" "*(d+h-i-1) , end=" " )
elif i < d+h+f :
print( " "*(2*(n-s))+"|"+" "*(2*(n-s)) , end=" " )
else :
print( "="*(2*(n-s))+"="+"="*(2*(n-s)) , end=("=" if j<n-1 else " ") )
print()
print()
行道樹 (三)
143 用數學寫程式
 推導過程:
此題表面上看起來與數學無關,倒像一個刁難程式設計題目。但若將問題
看成數學題目,就是一個簡單數學問題。舉例來說:讓 n 代表由最左
邊最矮的樹到中間最高的樹的數量,同時再以中間樹為標準,緊鄰的左
右兩旁的樹與中間樹差距為 1,再兩旁則為 2,將此數設為 s,如下圖:
行道樹 (四)
153 用數學寫程式
讓 f 函數代表樹幹長,h 函數為樹身高,w 函數為樹身底部寬,
d 函數為樹梢與頂部的距離,這些函數若分別以 n 與 s 表示各
為何?
當程式問題改成數學題目後,大概都可立即推導出:
f(n,s) = n - s
h(n,s) = 2 n + 1 - 2 s
w(n,s) = 4 ( n - s ) + 1
d(n,s) = 3 s
行道樹 (五)
163 用數學寫程式
包圍每棵樹的矩形高 = f + h + d = n − s + 2n + 1 − 2s + 3s
= 3n + 1,再加上底部等號線就是 3n+2,也就是縱向迴圈執行次數。
函式推導出來後,轉換為程式就簡單了。
列印時每棵樹都被看成矩形,樹體以外的空格暫以橫線替代,由下圖可知
本題的撰寫方式如同上題一樣。
本題需要應用「數學思維」才能解決程式設計 !!
----- --------- ------*------ --------- -----
----- --------- -----***----- --------- -----
----- --------- ----*****---- --------- -----
----- ----*---- ---*******--- ----*---- -----
----- ---***--- --*********-- ---***--- -----
----- --*****-- -***********- --*****-- -----
--*-- -*******- ************* -*******- --*--
-***- ********* ------|------ ********* -***-
***** ----|---- ------|------ ----|---- *****
| ----|---- ------|------ ----|---- |
=============================================

More Related Content

What's hot (20)

Func diff cal_exercise2-3
Func diff cal_exercise2-3Func diff cal_exercise2-3
Func diff cal_exercise2-3
 
Sym py edu
Sym py eduSym py edu
Sym py edu
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
 
Ch5 習題
Ch5 習題Ch5 習題
Ch5 習題
 
Ch9 範例
Ch9 範例Ch9 範例
Ch9 範例
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
Python differential equation
Python differential equationPython differential equation
Python differential equation
 
Ppt 78-100
Ppt 78-100Ppt 78-100
Ppt 78-100
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
 
Appendix A 教學
Appendix A 教學Appendix A 教學
Appendix A 教學
 
Polar example
Polar examplePolar example
Polar example
 
Ch2 教學
Ch2 教學Ch2 教學
Ch2 教學
 
Ch9 習題
Ch9 習題Ch9 習題
Ch9 習題
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
Ch12 範例
Ch12 範例Ch12 範例
Ch12 範例
 
Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
 
Ch11 範例
Ch11 範例Ch11 範例
Ch11 範例
 

Similar to Ch3 教學

C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序yiditushe
 
少年科技人雜誌 2015 年八月
少年科技人雜誌 2015 年八月少年科技人雜誌 2015 年八月
少年科技人雜誌 2015 年八月鍾誠 陳鍾誠
 
Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_vinsin27
 
程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號鍾誠 陳鍾誠
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。Chih-Hsuan Kuo
 
SymPy在微積分上的應用.ppt
SymPy在微積分上的應用.pptSymPy在微積分上的應用.ppt
SymPy在微積分上的應用.pptmclmath
 
Python学习笔记
Python学习笔记Python学习笔记
Python学习笔记Lingfei Kong
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務台灣資料科學年會
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Chun-Min Chang
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in RChun-Ming Chang
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學Sita Liu
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点thinkinlamp
 
R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探Sean Yu
 
Introduction to corona sdk
Introduction to corona sdkIntroduction to corona sdk
Introduction to corona sdk馬 萬圳
 

Similar to Ch3 教學 (20)

Ch3
Ch3Ch3
Ch3
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
少年科技人雜誌 2015 年八月
少年科技人雜誌 2015 年八月少年科技人雜誌 2015 年八月
少年科技人雜誌 2015 年八月
 
Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_Rde packagean zhuang_ji_ji_ben_cao_zuo_
Rde packagean zhuang_ji_ji_ben_cao_zuo_
 
程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號
 
Ch2
Ch2Ch2
Ch2
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。
 
Python story
Python storyPython story
Python story
 
Python Basic
Python  BasicPython  Basic
Python Basic
 
SymPy在微積分上的應用.ppt
SymPy在微積分上的應用.pptSymPy在微積分上的應用.ppt
SymPy在微積分上的應用.ppt
 
Python学习笔记
Python学习笔记Python学习笔记
Python学习笔记
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点
 
R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探
 
Introduction to corona sdk
Introduction to corona sdkIntroduction to corona sdk
Introduction to corona sdk
 

More from hungchiayang1 (19)

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
 
Ppt 143-143
Ppt 143-143Ppt 143-143
Ppt 143-143
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
 
Ppt 150-150
Ppt 150-150Ppt 150-150
Ppt 150-150
 
Ppt 145-149
Ppt 145-149Ppt 145-149
Ppt 145-149
 
Ppt 174-174
Ppt 174-174Ppt 174-174
Ppt 174-174
 
Ppt 144-144
Ppt 144-144Ppt 144-144
Ppt 144-144
 
Ppt 152-155
Ppt 152-155Ppt 152-155
Ppt 152-155
 
Ppt 156-156
Ppt 156-156Ppt 156-156
Ppt 156-156
 
Ppt 166-166
Ppt 166-166Ppt 166-166
Ppt 166-166
 
Ppt 165-165
Ppt 165-165Ppt 165-165
Ppt 165-165
 
Ppt 157-157
Ppt 157-157Ppt 157-157
Ppt 157-157
 
Ppt 175-175
Ppt 175-175Ppt 175-175
Ppt 175-175
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 

Recently uploaded

日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单
日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单
日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单kathrynalvarez364
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书kathrynalvarez364
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,Xin Yun Teo
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书kathrynalvarez364
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单jakepaige317
 

Recently uploaded (10)

日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单
日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单
日本姫路独协大学毕业证制作/修士学位记多少钱/哪里可以购买假美国圣何塞州立大学成绩单
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
 

Ch3 教學

  • 1. 第 三 講 用 數 學 寫 程 式 python 程式設計 python 簡要講義 國立中央大學數學系 吳維漢
  • 2. 學好程式的關鍵 : 善用數學推導 2  先想清楚再動手撰寫  利用數學思維於紙筆上推導  將複雜問題簡化成系列的漸進式題組,然後逐步克服  與人討論可破除思考盲點,但程式仍需自己完成  寫程式通常會出錯,很少有一路順利完成程式  留意解譯器產生的錯誤訊息  看懂他人程式後,冷卻後重頭撰寫  試著變化已完成的程式問題,再次練習  多多找尋題目挑戰自己  精神不濟時避免練習程式,徒然浪費時間  學好程設就要經常練習,別無他法  https://stackoverflow.com/ 3 用數學寫程式
  • 4. 三角數字塔 (二) 43 用數學寫程式 while True : n = int( input("> ") ) # 大縱向 for s in range(n) : # 小縱向 for i in range(n) : print( " "*((n-1-s)*n) , end="" ) # 大橫向 for t in range(s+1) : print( " "*(n-1-i)+str(i+1)*(2*i+1)+ " "*(n-1-i) , end="" ) print() print() 當程式問題有些複雜,找不出清楚的規律,此時可將問題簡化到可完成的小問題, 然後由此小問題逐步加入條件,循序漸進完成程式設計。
  • 5. 三角數字塔 (三) 53 用數學寫程式  分解步驟: 1.列印一個數字三角形,但將三角形當成矩形列印,也就是包含 數字前後的空格,先以橫線替代,以下 n = 4 為例: 2.列印一排數字矩形: ---1--- --222-- -33333- 4444444 ---1--- ---1--- ---1--- ---1--- --222-- --222-- --222-- --222-- -33333- -33333- -33333- -33333- 4444444 4444444 4444444 4444444
  • 6. 三角數字塔 (四) 63 用數學寫程式 3.列印 n 排數量遞增的數字矩形: ---1--- --222-- -33333- 4444444 ---1--- ---1--- --222-- --222-- -33333- -33333- 4444444 4444444 ---1--- ---1--- ---1--- --222-- --222-- --222-- -33333- -33333- -33333- 4444444 4444444 4444444 ---1--- ---1--- ---1--- ---1--- --222-- --222-- --222-- --222-- -33333- -33333- -33333- -33333- 4444444 4444444 4444444 4444444 4.在每排數字矩形之前增加若干個空格, 以星號替代。 ************---1--- ************--222-- ************-33333- ************4444444 ********---1--- ---1--- ********--222-- --222-- ********-33333- -33333- ********4444444 4444444 ****---1--- ---1--- ---1--- ****--222-- --222-- --222-- ****-33333- -33333- -33333- ****4444444 4444444 4444444 ---1--- ---1--- ---1--- ---1--- --222-- --222-- --222-- --222-- -33333- -33333- -33333- -33333- 4444444 4444444 4444444 4444444
  • 8. 山水圖案 (二) 83 用數學寫程式 while True : n = int( input("> ") ) # 山 for i in range(n) : for j in range(-n+1,n) : s = abs(j) # 山高至頂端距離 h = n - s # 山高 w = 2 * ( n - abs(j) ) # 山寬 t = i - s # 山頂往下距離 if i < s : print( " "*w , end="" ) else : print( " "*(n-1-i)+"/"+"*"*(2*t)+""+ " "*(n-1-i) , end="" ) print()
  • 9. 山水圖案 (三) 93 用數學寫程式 # 水 for i in range(2) : for j in range(-n+1,n) : w = 2*(n-abs(j)) print( "~"*w , end="" ) print() print()
  • 10. 山水圖案 (四) 103 用數學寫程式  分解步驟: 1. 用矩形方式產生高度為 n 的山,即同時列印山的前後空格, 先以橫線替代。 2. 若 s 為山高到頂端距離,輸入 s,以矩形方式印出此山, 此矩形包含山高到頂端。以下為山高 n = 6 時, s 分別 為 1 與 2 的圖形。 -----/----- ----/**---- ---/****--- --/******-- -/********- /********** > 1 > 2 ---------- -------- ----/---- -------- ---/**--- ---/--- --/****-- --/**-- -/******- -/****- /******** /******
  • 11. 山水圖案 (五) 113 用數學寫程式 3. 讓 s 由 0 1 2 依次變化,橫向印出三座山,相鄰兩山的空格暫以 不同符號替代,以資區分。 4. 設定 j 迴圈為 for j in range(-n+1,n) ,取其絕對值為 s, 仿上題印出所有的山,再加上兩排 ~ 底線即可完成程式。 -----/-----++++++++++-------- ----/**----++++/++++-------- ---/****---+++/**+++---/--- --/******--++/****++--/**-- -/********-+/******+-/****- /**********/********/******
  • 13. 行道樹 (二) 133 用數學寫程式 while True : n = int( input("> ") ) a = 3 * n + 2 for i in range(a) : for j in range(-n+1,n) : s = abs(j) # 樹與中間樹單位距離 f = n - s # 樹幹高 h = 2 * n + 1 - 2 * s # 樹身高 w = 4 * ( n - s ) + 1 # 樹身底寬 d = 3 * s # 樹稍與頂部距離 if i < d : print( " "*w , end=" " ) elif i < d+h : print( " "*(d+h-i-1)+"*"*(2*(i-d)+1)+" "*(d+h-i-1) , end=" " ) elif i < d+h+f : print( " "*(2*(n-s))+"|"+" "*(2*(n-s)) , end=" " ) else : print( "="*(2*(n-s))+"="+"="*(2*(n-s)) , end=("=" if j<n-1 else " ") ) print() print()
  • 14. 行道樹 (三) 143 用數學寫程式  推導過程: 此題表面上看起來與數學無關,倒像一個刁難程式設計題目。但若將問題 看成數學題目,就是一個簡單數學問題。舉例來說:讓 n 代表由最左 邊最矮的樹到中間最高的樹的數量,同時再以中間樹為標準,緊鄰的左 右兩旁的樹與中間樹差距為 1,再兩旁則為 2,將此數設為 s,如下圖:
  • 15. 行道樹 (四) 153 用數學寫程式 讓 f 函數代表樹幹長,h 函數為樹身高,w 函數為樹身底部寬, d 函數為樹梢與頂部的距離,這些函數若分別以 n 與 s 表示各 為何? 當程式問題改成數學題目後,大概都可立即推導出: f(n,s) = n - s h(n,s) = 2 n + 1 - 2 s w(n,s) = 4 ( n - s ) + 1 d(n,s) = 3 s
  • 16. 行道樹 (五) 163 用數學寫程式 包圍每棵樹的矩形高 = f + h + d = n − s + 2n + 1 − 2s + 3s = 3n + 1,再加上底部等號線就是 3n+2,也就是縱向迴圈執行次數。 函式推導出來後,轉換為程式就簡單了。 列印時每棵樹都被看成矩形,樹體以外的空格暫以橫線替代,由下圖可知 本題的撰寫方式如同上題一樣。 本題需要應用「數學思維」才能解決程式設計 !! ----- --------- ------*------ --------- ----- ----- --------- -----***----- --------- ----- ----- --------- ----*****---- --------- ----- ----- ----*---- ---*******--- ----*---- ----- ----- ---***--- --*********-- ---***--- ----- ----- --*****-- -***********- --*****-- ----- --*-- -*******- ************* -*******- --*-- -***- ********* ------|------ ********* -***- ***** ----|---- ------|------ ----|---- ***** | ----|---- ------|------ ----|---- | =============================================