Python 100天練習 Day3 分支結構

2021-09-28 23:38:41 字數 4464 閱讀 3411

本文以github上100天python從新手到大師為素材,規劃為約100天的練習,每次的學習和總結均發在這裡。有錯誤的地方還請朋友們指正。

在day1 &2 兩天的程式中,我們的**都屬於順序結構,即一條線下來的**。以day2練習中「華氏度轉換攝氏度」為例做流程圖:

但在現實中也包含有需要條件判斷才能夠進行下一步操作的場景:

例如在計算分段函式的過程中需要先行判斷自變數x

xx的取值屬於哪個範圍才能夠進一步計算因變數f(x

)f(x)

f(x)

的值。我們稱之為「分支結構」或「選擇結構」

在python中不適用花括號來確定層次結構,而使用縮排(tab)來確定層次結構。如果if條件成立的條件下需要執行多條語句,那麼只要保持多條語句具有相同的縮排就可以了。

if—else是最簡單的分支結構,只有if乙個判斷條件。大體語法結構如下:

(只示意)

if 第乙個條件:

# 如果判斷條件是true則執行這條語句

執行語句

else

:# 如果判斷條件是false則執行這條語句

執行語句

下面是乙個簡單例子,輸入使用者名稱和密碼,如果使用者名為「admin」,密碼為「123456」則登入成功,否則登陸失敗。

"""

輸入賬號名稱和密碼

如果賬號名稱為admin,密碼為123456則登陸成功,否則登陸失敗

"""username =

input

("請輸入賬戶名稱: "

) password =

input

("請輸入密碼: ")if

(username ==

"admin"

)and

(password ==

"123456"):

print

("登陸成功"

)else

:print

("登陸失敗"

)

在其他的場景中,還會有多個條件判斷的情況出現,例如分段函式**現3個區間的時候,簡單的if - else就沒有辦法解決這個問題。所以我們可以採用if - elif - else結構來解決問題:

下面是乙個簡單示例:利用if - elif - else 結構實現這個分段函式

**如下:

"""

分段函式的實現

3x - 5 (x > 1)

y = x + 2 (-1 ≦ x ≦ 1)

5x + 3 (x < -1)

"""x =

float

(input

("輸入x的值: "))

if x >1:

y =3*x -

5elif x >=-1

: y =

5*x +

3else

: y = x +

2print

("f(%.2f)= %.2f"

%(x,y)

)

當然上面的分段函式問題也可以用if巢狀的方式來實現,需註明在if elif else下面多可以進行巢狀

"""

巢狀"""

x =float

(input

("輸入x的值: "))

if x >1:

y =3* x -

5else

:if x

: y =

5* x +

2else

: y =

5* x +

3print

("f(%.2f)= %.2f"

%(x,y)

)

但不推薦使用巢狀if的方式進行,巢狀語句會影響**的可讀性。

下面是day3的3道練習題,與官方給出的解法有出入,如果有啥錯誤問題還請指出~~

練習1 英吋和厘公尺互相轉換

tips:

轉換公式:1 英吋 = 2.54 厘公尺

"""

英吋和厘公尺互相轉換

1英吋inch = 2.54 厘公尺centimeter

"""vlaue =

float

(input((

"請輸入長度值: "))

)unit =

input

("輸入單位: "

)if unit ==

"in"

or unit ==

"英吋"

:print

("%.2f 英吋 為 %.2f 厘公尺"

%(vlaue,vlaue *

2.54))

elif unit ==

"cm"

or unit ==

"厘公尺"

:print

("%.2f 厘公尺 為 %.2f 英吋"

%(vlaue,vlaue%

2.54))

else

:print

("輸入不規範,請重新輸入"

)

練習2 百分制成績轉換為等級制

要求:90分以上(含90分 輸出a;

80分-90分(不含90分)輸出b;

70分-80分(不含80分)輸出c;

60分-70分(不含70分)輸出d;

60分以下輸出e。

"""

將百分制成績分數轉換為等級制成績

轉換公式如下:

如果輸入的成績在

90分以上(含90分 輸出a;

80分-90分(不含90分)輸出b;

70分-80分(不含80分)輸出c;

60分-70分(不含70分)輸出d;

60分以下輸出e。

"""score =

float

(input

("請輸入成績: "))

if score >=90:

print

("該成績為a"

)elif score >=80:

print

("該成績為b"

)elif score >=70:

print

("該成績為c"

)elif score >=60:

print

("該成績為d"

)else

:print

("該成績為e"

)

練習3:給出三條邊,判斷是否可以組成三角形,如果可以的話計算周長和面積

tip:利用邊長計算三角形面積公式為海**式

a re

a=p×

(p−a

)×(p

−b)×

(p−c

)area=\sqrt

area=p

×(p−

a)×(

p−b)

×(p−

c)​

"""

判斷輸入邊長是否可以成為三角形,如果可以的話計算周長和面積

利用邊長計算三角形面積的公式為海**式:

設周長的一半為p

area = √p(p-a)(p-b)(p-c)

"""a =

float

(input

("輸入第一條邊的長度: "))

b =float

(input

("輸入第二條邊的長度: "))

c =float

(input

("輸入第三條邊的長度: "))

if a + b > c and a + c > b and b + c > a:

perimeter = a + b + c

p = perimeter /

2 area =

(p *

(p - a)

*(p - b)

*(p - c))**

0.5print

("perimeter is %.2f \narea is %.2f"

%(perimeter,area)

)else

:print

("該邊長組不成立三角形"

)

本文在作者學習完文字內容後,以列出標題大綱的方式讓自己填充內容,以求對學習的內容有乙個複習的作用,同時對照文字學習材料進行修正,盡量保證不誤人子弟。如有錯誤之處還請朋友們多多指正,謝謝!

Python100天打卡 Day02 語言元素

指令和程式 變數和型別 變數是一種儲存資料的載體,計算機中的變數是實際存在的資料或者說是儲存器中儲存資料的一塊記憶體空間。python中的資料型別很多,常見的有 變數命名規則 變數名由字母 廣義的unicode字元,不包括特殊字元 數字和下劃線構成,數字不能開頭。大小寫敏感 大寫的a和小寫的a是兩個...

Python100天學習筆記 Day 6 函式

使用def 來定義函式,通過return返回函式值 在python中,函式的引數可以有預設值,也支援使用可變引數,所以python並不需要像其他語言一樣支援函式的過載,因為我們在定義乙個函式的時候可以讓它有多種不同的使用方式。同時,由於python沒有函式過載的概念,如果同一.py檔案出現了兩個同名...

python 100道練習題

題目 利用條件運算子的巢狀來完成此題 學習成績 90分的同學用a表示,60 89分之間的用b表示,60分以下的用c表示。usr bin python coding utf 8 defk score if score 90 return a elif score 60 return b else re...