文章目錄
- 一、分支結構(選擇結構)
- 1.分支結構初體驗
- 2.分支結構練習
- 二、回圈結構
- 1.`for-in`回圈
- 2.`for-in`回圈練習
- 3.`while`回圈
- 4. break和continue
- 5. `while`回圈練習
- 6. 嵌套的回圈結構
上一篇文章講了Python初體驗,了解了Python的歷史、優缺點、未來發展前景,帶大家初步了解了一下Python,之后學習了Python中的語言元素——變數和運算子,經過簡單的練習,相信大家也基本掌握了這兩個元素,我們昨天寫的代碼都是一條一條執行,我們稱之為順序結構,但是就如同我們的人生不可能是一帆風順,總會遇到人生的岔路口,需要我們做出自己的選擇,同樣在編程語言中計算機也需要做出選擇,
一、分支結構(選擇結構)
比如我們在登錄某一賬號時,系統需要將我們輸入的賬號和密碼同時和系統中已保存的賬號和密碼進行比對,如果賬號和密碼同時通過,那么我們登陸成功,否則提示登錄失敗,請重新輸入,這里就會產生兩條分支,這兩條分支只有一潭訓被執行,我們將這種結構稱為分支結構,也叫選擇結構,在Python中,要構造分支結構可以使用if、elif和else關鍵字,
基本結構為:
if 條件:
條件成立執行的代碼塊
…
elif 條件:
條件成立執行的代碼塊
…
else:
…
這里我們需要注意的是,條件后一定要加“ :”,條件成立執行的代碼塊前要打四個空格,不同于C++、Java等編程語言,Python中沒有用花括號來構造代碼塊而是使用了縮進的方式來表示代碼的層次結構,條件成立執行的代碼只需要保持相同的縮進就可以了,縮進可以任何數量空格,但是我們一般使用四個空格,
1.分支結構初體驗
下面舉一個例子:
import getpass
username = input('用戶名:')
password = getpass.getpass('密碼:')
if username == 'admin' and password == '123456':
print('登陸成功,歡迎您!')
print('客服熱線:400-500-8820')
else:
print('登錄失敗,用戶名或密碼錯誤')
print('程式結束,下次見')
在這個程式中,首先讓用戶輸入用戶名和密碼,如果用戶名和密碼同時符合條件,則執行登錄成功的代碼塊,否則執行登錄失敗的代碼塊,不管是否登陸成功,都會執行程式結束,下次見的代碼,
2.分支結構練習
1. 下面我們使用分支結構來求一個分段函式的值
f ( x ) = { 3 x ? 5 , x > 1 x + 2 , 1 > = x > = ? 1 5 x + 3 , x < ? 1 f(x)= \begin{cases} \ \ \ 3x - 5,&x > 1\\ \ \ \ x + 2 ,& 1>=x >= -1\\ \ \ \ 5x + 3,&x < -1 \end{cases} f(x)=?????? 3x?5, x+2, 5x+3,?x>11>=x>=?1x<?1?
代碼如下:
x = float(input('x='))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x) = {y:.2f}')
我們讓用戶輸入一個數字,然后判斷這個數字的范圍,這個范圍就是分支結構的條件,如果第一個條件不滿足就進行第二個條件判斷,若前兩個條件都不滿足,則不用判斷第三次,直接運行第三個條件下的代碼塊,
2. 輸入本月總收入,輸入本月五險一金扣除金額,計算出應繳稅款和稅后收入

代碼如下:
total = float(input('本月收入:'))
insurance = float(input('五險一金繳納額:'))
E = total - insurance
I = E - 3500
if I <= 0:
A = E
if 1500 > I >= 0:
T = I * 0.03
A = E - T
if 4500 > I >= 1500:
T = I * 0.1 - 105
A = E - T
if 9000 > I >= 4500:
T = I * 0.2 - 555
A = E - T
if 35000 > I >= 9000:
T = I * 0.25 - 1005
A = E - T
if 55000 > I >= 35000:
T = I * 0.3 - 2755
A = E - T
if 80000 > I >= 55000:
T = I * 0.35 - 5505
A = E - T
if I >= 80000:
T = I * 0.45 - 13505
A = E - T
print(f'您應該繳納稅款:{T}元,您的稅后收入為:{A:.2f}')
讓用戶輸入本月收入和五險一金應繳納金額后,計算出扣除五險一金后的工資 E ,再算出減去個稅起征點3500后的 I ,通過判斷 I 所在的范圍,計算出繳納稅款和稅后收入,
二、回圈結構
如果我們要實作每隔1秒中在螢屏上列印一次“hello, world”并持續列印一個小時,我們肯定不能夠直接把print('hello, world')這句代碼寫3600遍,這里就需要回圈結構,回圈結構就是程式中控制某潭訓某些指令重復執行的結構,在Python中構造回圈結構有兩種做法,一種是for-in回圈,一種是while回圈,
1.for-in回圈
基本結構
for 臨時變數 in 序列:
重復執行代碼
…
如果明確地知道回圈執行的次數,我們推薦使用for-in回圈,例如計算1到100的和, 被for-in回圈控制的陳述句塊也是通過縮進的方式來確定的,這一點跟分支結構完全相同,大家看看下面的代碼就明白了,
total = 0
for A in range(1, 101):
total = total + A
print(total)
range(101):可以用來產生0到100范圍的整數,需要注意的是取不到101,range(1, 101):可以用來產生1到100范圍的整數,相當于前面是閉區間后面是開區間,range(1, 101, 2):可以用來產生1到100的奇數,其中2是步長,即每次數值遞增的值,range(100, 0, -2):可以用來產生100到1的偶數,其中-2是步長,即每次數字遞減的值,
我們首先將1-100的總和賦予初始值0,寫出for-in回圈結構,這里臨時變數可以根據變數定義規則隨便定義一個,range表示A的取值范圍是1-100的整數,每次在取值范圍中依次取出一個數,并將total的值重繪,total的值等于前一次回圈后的total值加上本次取出的A的值,并輸出最后一次total值,
知道這一點后我們可以進一步算出1-100之間偶數的總和,
total = 0
for A in range(2, 101,2):
total = total + A
print(total)
這個方法只是改變取值的步長,也就是第二次取的值在前一次取值上加2,當然我們也可以融入分支結構來進行計算這個問題,
total = 0
for A in range(1,101):
if A % 2 == 0:
total = tatal + A
print(total)
2.for-in回圈練習
1. 輸入一個非負整數N,計算N!
total = 1
X = int(input('請輸入一個非負整數:'))
for A in range(X, 1, -1):
total *= A
print(total)
這道題和上面1-100求和的方式一樣,只是累加改為累乘
2. 輸入兩個正整數,找出它們的最大公約數
a = int(input('請輸入第一個數:'))
b = int(input('請輸入第二個數:'))
if a > b:
a, b = b, a # Python中可以用這樣的方式來交換兩個變數的值
# 隨便以一個輸入的值開始向下回圈,判斷能否整除兩個輸入的值
for i in range(a, 0, -1):
if b % i == 0 and a % i == 0:
print(f'最大公約數為:{i}')
# 終止回圈
break
公約數就是能同時整除幾個整數的數,輸入兩個數后,我們將更小的一個數作為取值范圍,因為更小的數肯定不能被整除,所以將a 賦為更小值,從a開始向0取值,如果遇到可以同時整除a, b的數,那么終止回圈,這個數就是最大公約數,
3.while回圈
如果要構造不知道具體回圈次數的回圈結構,我們推薦使用while回圈,while回圈通過一個能夠產生或轉換出bool值的運算式來控制回圈,運算式的值為True則繼續回圈;運算式的值為False則結束回圈,
基本結構
while 執行條件:
條件成立執行的代碼
條件成立執行的代碼
下面我們通過一個“計算三角形面積”的小游戲來看看如何使用while回圈,規則是輸入三角形三條邊的長度,如果能構成三角形就計算周長和面積,如果不能構成三角形,提示用戶重新輸入,直到正確,
while True:
a = float(input('a = '))
b = float(input('b = '))
c = float(input('b = '))
if a + b > c and a + c > b and b + c > a:
p = a + b + c
half = p / 2
area = (half * (half - a) * (half - b) * (half - c)) ** 0.5
print(f'三角形周長為{p}')
print(f'三角形面積為{area:.2f}')
break
else:
print('不能構成三角形,請重新輸入')
首先我們while后的回圈條件設為True,此時該回圈將會是一個死回圈,如果沒有break等跳出回圈的條件話,該回圈將會一直回圈,首先讓用戶輸入三個數字,判斷該三條邊能否組成三角形,如果能組成三角形,則輸出周長和面積,并跳出死回圈,否則重復回圈,
同時我們也能使用while回圈進行知道回圈次數的計算,我們還是通過計算1-100的總和來看看while回圈的使用
total = 0
counter = 1
while counter < 101:
total += counter
counter += 1
print(total)
counter計數器初始值為1,每回圈一次,counter加1,當counter小于101時,總數等于上一次回圈完后的總數加上本次counter數,直至回圈結束,輸出total,
4. break和continue
上面的代碼中使用while True構造了一個條件恒成立的回圈,也就意味著如果不做特殊處理,回圈是不會結束的,這也就是常說的“死回圈”,為了在用戶猜中數字時能夠退出回圈結構,我們使用了break關鍵字,它的作用是提前結束回圈,需要注意的是,break只能終止它所在的那個回圈,這一點在使用嵌套回圈結構時需要引起注意,下面的例子我們會講到什么是嵌套的回圈結構,除了break之外,還有另一個關鍵字是continue,它可以用來放棄本次回圈后續的代碼直接讓回圈進入下一輪,
5. while回圈練習
1.計算機出一個1到100之間的亂數,玩家輸入自己猜的數字,計算機給出對應的提示資訊(大一點、小一點或猜對了),玩家只有7次機會,若7次機會后玩家還沒有猜出,直接給出正確答案
import random
i = 0
# 計算機從1-100之間隨機給出一個數字
answer = random.randrange(1, 101)
while True:
i += 1
num = int(input('請輸入一個整數:'))
if num < answer:
print('大一點')
elif num > answer:
print('小一點')
else:
print('您猜對了')
break
if i == 7:
print(f'智商不足請充值,正確數字為:{answer}')
break
這道題由于不知道玩家具體幾次會猜出數字,所以使用一個死回圈進行,玩家輸入一次數字后,計數器加一,達到7次后結束回圈并提示正確數字,若玩家在7次以內輸入數字,則給出對應提示,
6. 嵌套的回圈結構
和分支結構一樣,回圈結構也是可以嵌套的,也就是說在回圈中還可以構造回圈結構,下面的例子演示了如何通過嵌套的回圈來輸出一個乘法口訣表(九九表),
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}', end='\t')
print()
很顯然,在上面的代碼中,外層回圈用來控制一共會產生9行的輸出,而內層回圈用來控制每一行會輸出多少列,內層回圈中的輸出就是九九表一行中的所有列,所以在內層回圈完成時,有一個print()來實作換行輸出的效果,
以上就是Python學習第二天,Get It!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/290097.html
標籤:python
