第三章 決策運算

範例 3-2a

請寫一個程式,完成以下要求:

1.  輸入一個0~100的分數。

2.  當分數大於90分時,輸出A

3.  當分數介於80~89時,輸出B

4.  當分數介於70~79時,輸出C

5.  當分數介於0~69時,輸出D

自我練習

1.請寫一程式,判斷所輸入的數是正數、0或負數。

2.某一貨品定價100元,若購買10()以上打9折,若購買3099件則打8折,若購買100件以上則打7件,試寫一程式可以輸入購買件數而得總價。測試資料如下:

輸入

輸出

5

500

10

900(100*10*0.9)

30

2400(100*30*0.8)

100

7000(100*100*0.7)

 

3.直線。直線標準式為ax+by+c=0,請寫一程式,可以指派一直線係數a,b,c。其次,可再輸入任一點座標,並判斷所輸入點式否在直線上。例如,指派a,b,c分別是1,2,-4,那方程式就是x+2y-4=0,其次,輸入點若是(2,1),那就是在直線上,若是(1,2),那就不在直線上。

 

4.請寫一程式,可以輸入一個小寫字元,請判斷其是否為母音。說明,字元a,e,i,o,u稱為母音,其餘為子音。

5.同上題,請寫一程式,可以自動產生一個小寫字元,並判斷是否為母音。

6.請寫一個程式,可以產生一個025的亂數,且依以下分數顯示燈號

    2125:五個燈。

    1620:四個燈。

    1115:三個燈。

    610:兩個燈。

    15:一個燈。

    0:零個燈。

7.表決器。假設有一項評審工作,有3位評審,當其中兩人或以上同意,則表示過關,請設計此程式。

8.請輸入一個整數x,並判斷此整數是否滿足1<x<=6

9.請輸入一個整數x,並判斷此整數是否滿足x>3 or x<-2

10.請輸入3個線段長度,判斷這3個線段,是否可圍一個三角形。圍成三角形的條件是,任兩邊之和要大於第三邊?(提示:任兩邊之和大於第三邊的數學語言是:a+b > c and a+c > b and b+c > a,請將以上數學語言轉為Python。測試資料 3,4,5 可以 1,1,3不可以)

11.若有一數學式,同時判斷六個數字是否滿足 ,請轉換為Python敘述。例如,1,2,3 2,4,6就滿足;1,2,31,2,5就不滿足。

12.若有一數學式,同時判斷六個數字是否滿足又如何表示呢?

範例 3-2b

請寫一個程式,可以判斷所輸入座標的所在象限。

自我練習

1、同上範例,但增加先判斷是否在原點或xy軸上。測試資料如下

輸入(x,y)

輸出

(0,0)

原點

(0,3)

y

(3,4)

I

2、同上題,但程式一執行,要求先輸入密碼,密碼若為『abcd』,那才可執行本程式。

3、同上題,但程式一執行,要求先輸入密碼,密碼若為『aa11』、『bb22』、『cc33』或『abcd』,那才可執行本程式。

 

極大與極小

範例 3_2c

請寫一程式,滿足以下條件。

1、 輸入兩個數。

2、 求輸入兩數極大值。

3、 輸出極大值。

自我練習

1、請寫一程式,滿足以下條件。

1)輸入三個數。

2)求此三個數的極大值。

3)輸出極大值。

 

 

2、請寫一程式,可以輸入5個數值,請去掉最大值與最小值,再求其平均。

 

排序

範例 3_2d

請寫一程式,滿足以下條件。

1、 輸入三個數。

2、 將此三個數由小而大輸出。

3、 請寫一程式,可以輸入四個人名與其分數,並依照分數由小而大輸出,輸出應含人名與分數。(提示:這題要練習,變數如何取,程式較好寫,其次,當分數交換,人名也要跟者換,這都是一些程式設計運算思維,請大家好好練習。)

 

3_3  if~elif~

 

自我練習

1請寫一程式,將所輸入的012…6,轉為'星期日''星期一'…'星期六'等字串。

2.請寫一個程式,可以產生一個025的亂數,且依以下分數顯示燈號

    2125:五個燈。

    1620:四個燈。

    1115:三個燈。

    610:兩個燈。

    15:一個燈。

    0:零個燈。

3.請寫一程式,可以自動產生一個0127的亂數,以字元方式輸出此亂數,並判斷是否為大寫字元、小寫字元、或數字。

 

3_4 位元運算子

範例3_4a複選題評分。大學學測考試的複選題共五個選項,五個選項全答對得5 分,錯一個選項得3 分,錯兩個選項得1 分,錯超過兩個選項得0 分,未做答也是0 分, 且答錯不倒扣,請寫一程式,可以協助評分,請問您的資料結構為何?

3_5  實例探討

猜拳遊戲

範例3_5a 猜拳遊戲。請寫一個程式,可以由人和電腦猜拳,並評定勝負。

自我練習

1、那三個人同時猜拳呢,由電腦產生兩個亂數,由您和電腦猜,且評判輸贏。(提示:兩個人共9種情況,用兩層決策,三個人共27種情況,可用3層決策)

範例5_3d紅綠燈程式。假設有單向紅綠燈時序如下,請設計程式完成其功能。

時序

燈號

0

綠燈

1

綠燈

2

綠燈

3

綠燈

4

綠燈

5

黃燈

6

黃燈

7

紅燈

8

紅燈

9

紅燈

10

紅燈

自我練習

1、觀察十字路口雙向紅綠燈,規劃其時序,寫出其程式。

 

一元二次方程式 

範例 3-5b

請設計一個程式,可以解一元二次方程式ax2 + bx + c = 0

自我練習

1.解二元一次方程式。解二元一次方程式的演算法如下:

1.    設二元一次方程式如下:

 2.    (表示d = a1b2 - a2b1

 3.  假如,則方程式無限多解,且程式結束。(代表兩重疊直線)

 4.  假如,則方程式無解,且程式結束。(代表兩平行直線)

 5. 

 6. 

請設計一個程式,可以解二元一次方程式。

 

 

 

閏年的判斷

範例5-3c

請寫一個程式,可以將使用者所輸入的西元年份,判斷其為平年或閏年。

 

 

3_6 APCS實例探討

一,三角形判斷(APCS105第二梯次試題)

若已知三角形三邊長,判斷是否構成三角形、評定三角形種類與計算三角形面積的演算法如下:

A、 輸入三角形的三邊長abc

B、 任兩邊之和要大於第三邊。

3、若c是最長邊,假如a2 + b2 > c2則為銳角三角形;否則,假如a2 + b2 = c2,則為直角三角形;否則此三角形為鈍角三角形。

5、令

6、三角形面積

請輸入三角形三邊長,首先判斷是否構成三角形、其次判別三角形的種類,最後計算其面積。

範例一:輸入

3 4 5

範例一:正確輸出

3 4 5

Right

(說明)

a×a + b×b = c×c

成立時為直角三角形。

範例二:輸入

101 100 99

範例二:正確輸出

99 100 101

Acute

(說明)

邊長排序由小到大輸出,

a×a + b×b > c×c

成立時為銳角三角形。

範例三:輸入

10 100 10

範例三:正確輸出

10 10 100

No

(說明)

由於無法構成三角形,

因此第二行須印出

No」。

自我練習

1、請輸入4個線段長度,並評判此四個線段可否圍成凸四邊形。

二、城市移動(108/第一梯次)

假設有一個遊戲,有3 個城市,玩家依亂數L 3 個城市移動,移到城市1 L 分,如果L 是偶數則下一回合移到城市2,否則留在城市1;移到城市2 得到2L 分,如果L 3 的倍數,下一回合移到城市3,否則前往城市1;移到城市3 得分是L 除以10 的商,如果L 5 的倍數,下一回合移到城市3,否則移到城市1。測試資料如下:

4 1 //4回合,起始城市是1

1 2 3 12 //四個亂數

備註:此題目為憑個人記憶,題目很好,還是呼籲主辦單位公佈試題,讓學生練習。

演算法:因為每一城市有其不同移動規則與得分方式,所以可用if分成3 部分,且因每一城市都有其移動規則,所以每一城市都要自己用1 if else,這樣就可以計算每一次轉移到哪一城市與每一次的得分。所以這題是屬於雙層決策問題,拿到分數沒有問題。

三、主客場籃球賽制。(108/第二梯次)

1、連打兩場,主場球隊兩場皆贏輸出Win

2、兩場皆輸,輸出Loss

3、其餘輸出Tie

4、輸入格式 :每場4節得分,主場先輸出。以下分別是主隊、客隊兩場比賽的四小節得分

15 20 25 30      

15 16 17 18

5 10 15 20

5 6 7 8

 

習題

1.假設所得稅稅率累進法則如下:

    (1) 淨所得30萬以下繳納6%。

(2)  淨所得3080萬之間,則前面30萬繳納6%,超過30萬的部分繳納13%。

    (3) 淨所得在80200萬之間繳納21%。(前面30萬繳6%,3080萬之間繳13%)

    (4) 淨所得超過200萬,超過的部分繳納30%。

試寫一程式可以輸入淨所得,並計算應繳納稅額。測資如下:

 

淨所得

納稅額

20

20*6=12000

40

30×6+10×13= 31000

100

30×6+50×13+20*21% =125000

220

30×6+50×13+120*21% +20萬*30=395000

2.假設自來水費率如下:

A、100度以下,每度3元。

B、 100300度,超過100度的部分,每度5元。

C、 300度以上,超過300度的部分,每度6元。

根據以上條件,寫一程式,可輸入用水度數,得到水費。例如,測資如下表:

 

度數

水費

50

503150

200

10031005800

400

100*3+200*5+100*6=1900

 

 

3.  假設計程車的計費方式如下:

    1000公尺以內60元。 超過1000公尺時,

(1)日間以每500公尺加收6元,不足500公尺時,以500公尺計算。

    (2) 夜間以每300公尺加收6元,不足300公尺,以300公尺計算。

     請根據以上條件,寫一程式完成車資的計算。本例,日間輸入1,夜間輸入0,再輸入一個里程數,並計算車資。測資如下表:  

 

模式

里程

車資

模式

里程

車資

1

500

60

0

500

60

1

1800

60+6*2=72

0

1800

60+8*3=84

 

 

4. 寫一程式輸入x值,並印出其所對應的值,其函數對應如下:

          x+3           x>3

          x2            1<=x<=3

y=f(x)=               0<x<1

0                                    x<=0

 

 

5.請寫一程式,可以輸入三點座標,輸出其面積。

6、同上題,任意輸入3點,檢查是否共線,若未共線,輸出其面積。

提示:任3點面積若為0,則共線。

 

7、判斷任意點D是否在三角形ABC內或外。已知ABC三點座標,請寫一程式,可以輸入D點座標,並判斷任一點D是否在三角形ABC內或外。

(提示:D若在三角形內,則三角形ABC面積=DABDBCDAC的面積)

 

8、凸或凹四邊形。已知 ABCD四點座標,請寫一程式,可以判斷四邊形 ABCD是否為凸或凹四邊形。

(提示:若為凸四邊形,則任一點,均不得在任三點所圍成的三角形內)

 

9、同上題,若為凸四邊形,並計算其面積。 提示:任意凸多邊行,都可以將第5題公式推廣,並且代入。

10.於二維平面中,請寫一程式,可以判斷兩直線平行、或相交或重合,若平行計算其距離,相交計算其交點。

 

11.寫一程式,可以任意輸入凸四邊形的四個端點座標,並可將其按順時針方向排列此四個點。(提示:請聯想高中數學的極座標)

 

12、停車場計費。假設停車場每小時30元,不足1小時以1小時計,每日最高180元,請寫一程式,可以計算其停車費。測試資料如下:

編號

進場時間

離場時間

停車時間

金額

1

09:40

11:30

110

60

2

09:50

20:20

630

180