Python程式語言下的條件判斷以及for迴圈,while迴圈
作用:讓程式根據條件選擇性的執行某條語句或某些語句
說明:if語句又叫條件語句,也叫分支語句
語法:if 真值表達式1;
語句塊1
elif 真值表達式2:
語句塊2
elif 真值表達式3:
語句塊3
...
else:
語句塊4
語法說明:elif子句可以有0個,1個或多個
else子句可以有0個或1個且只能放在if語句的最後
要求:if語句內部的語句通常要以4個(英文狀態)空格的縮排來表求包含關係,相同的縮排格式代表相同的所屬級別
示例見:code/03_if.py
練習:1,任輸入一個數,判斷是否大於100
2,判斷是否小於0
3,判斷這個數是否在20-50間
if-elif-else示例
練習:
1,輸入一個季度1~4,
輸出這個季度有哪幾個月,如果輸入不是1~4的數,提示使用者您的輸入有誤
練習:
2,輸入一年中的月份1~12,輸出這個月在那個季度,若輸入其他數,提示您的輸入有誤
if語句的真值表達式:
if 100:
print(“真值”)
#等同於
if bool(100)
print(“真值”)
bool(x)返回假的情況:
x為:0, 0.0 ,0+0j , False ,None ,‘’(空字串)
[]空列表
{}空字典
set()空集合
()空元組
...
if 語句巢狀
if語句本身是由多條子句組成的一條複合語句
if語句可以作為語句巢狀到另一個語句的內部
示例見:
code/05_if_embed.py
練習:輸入一個學生的成績(0~100),
判斷這個學生的成績是優(90~100),良(80~89),及格(60~79),不及格,成績不合法五中
語句
賦值語句
del語句
if語句
表示式語句 print("hello")
表示式
1+2 bool(100) print("hello") True
if i = 100:
print(i)-----------------錯誤,if後只能跟表示式,不能跟語句(此處為賦值語句)
條件表示式:
語法:
表示式1 if 真值表達式 else 表示式2
作用:
若真值表達式的布林環境值為true,則執行表示式1並返回結果的引用,否則執行表示式2並返回結果的引用
示例見:code/if_express.py
練習:
寫程式,輸入一個數
(1)用if語句計算並列印絕對值結果
(2)用條件表示式計算這個數的絕對值並表達出來
pass 語句
作用:
通常用來填充語法空白
pass 語句又名空語句
語法:
pass
示例見:code/07_pass.py
布林運算:
運算子:
not(非) and(與) or(或)
布林非操作 not
語法:
not x
作用:
對x進行布林取值,如bool(x)
為True,則返回False。否則返回True
示例:
not True # False
not False # True
not 100 # False
布林‘與’操作 and
語法:
x and y
注:x,y代表表示式
作用:
優先返回假值物件
當bool(x)的值為False時,返回x,否則,返回y
示例:
True and True # True
True and False # False
False and True # False
False and False # False
例:>>> 100 and 200
200
>>> 50 and 100
100
>>> 0 and 0.0
0
>>> 0.0 and 0
0.0
布林’或’操作:
語法:x or y
作用:優先返回真值物件,
當x為True時返回x,否則返回y
示例:
True or True # True
True or False # True
False or True # True
False or False # False
100 or 200 # 100
100 or 0.0 # 100
0 or 200 # 200
0 or 0.0 # 0.0
運算子優先順序:
布林運算優先順序 < 比較 < 加減 < 乘除,地板除 < 冪
思考:
score = input("請輸入成績: ") or ‘0’
score = int (score)
if score < 0 or score >100:
print ("您的成績不合法!!!")
else:
print ("您輸入的成績是:",score)
一元運算子:
正負號運算子:
+(正號) -(負號)
語法:
+ 表示式
- 表示式
示例:
a = 5
b = -a
c = +a
練習:
1、北京計程車計費
收費標準:
3公里以內收費13元,超過3公里後基本單價為2.3元/公里,
空駛費:超過15公里後,每公里加收基本單價的50%作為返程的空駛費(3.45元/公里)
要求:
輸入公里數,打印出收費的金額(以元為單位進行四捨五入)
2、輸入一個學生的三科成績:
打印出最高分,最低分,平均分
3、給出一個年份,判斷是否為閏年並列印結果
閏年規則:每四年一閏,每百年不閏,四百年又是一個閏年
例:2016年 閏年
2100年 不是閏年
2400年 閏年
4、BMI指數(Body Mass Index)即為身體質量指數,計算公式為:
BMI=體重(公斤)/身高(米)的平方
例:一個69公斤的人,身高173公分,BMI=69/1.73**2=23.05
標準表:BMI < 18.5 體重過輕
18.5 <= BMI <=24 正常範圍
BMI > 24 體重過重(超標)
輸入身高和體重,列印BMI值,並列印體重狀況
迴圈語句:
while 語句
for 語句
☆ while 語句:
作用:根據一定條件,重複的執行一條語句或多條語句
語法:while 真值表達式:
語句塊
else:
語句塊
示例見while.py
練習:用while語句解決下述問題:
輸入一個數n,打印出n行的“hello world”
Ctrl + c :讓執行的程式強制結束
練習:用while語句列印1~20的整數(包含20)
見:02_while_1-20.py
1,輸入一個整數,用end變數繫結,打印出1~end的所有整數(包含end)
2,寫程式,輸入兩個整數,第一個用begin變數繫結,第二個用end變數繫結打印出begin~end的所有整數
while語句語法說明:
1,先執行真值表達式,判斷True/False
1,如果為True,則執行語句塊1,然後跳轉到第一步
3,如果為False,則執行else子句部分的語句塊2,然後結束此while語句的執行。
若沒有else子句,則直接結束此while語句
4,else子句部分可以忽略(同if語句類似)
while注意事項:
1,要控制真值表達式來防止死迴圈;
2,通常用真值表達式內的變數來控制迴圈條件;
3,通常要在迴圈語句塊內改變迴圈變數來控制迴圈的次數和變數的走向
練習:
1、列印1~20的整數,列印在一行內顯示,每個數字見用一個空格分隔開
如1 2 3 4 5 6...
提示:print(.....,end=‘ ’可以不換新行)
2、列印1~20的整數,每行五個,列印四行,如:
1 2 3 4 5
6 7 8 9 10
....
....
注:while語句內可以嵌入if語句
3、用while語句列印10~1的所有整數,包括1
練習:
1,寫程式,用while迴圈來計算1+2+3+4+....+99+100的和
2,用while實現列印三角形,輸入一個整數,表示三角形的寬度和高度,打印出相應的直角三角形
如:輸入三角形寬度:4
列印如下:
*
**
***
****
while 語句巢狀
while 語句本身是語句,和其他語句一樣,可以放在其他複合語句的內部
while 巢狀示意:
while 真值表達式:
...
while 真值表達式2:
...
else:
...
...
else:
...
問題:列印1~20間的整數到一行:1 2 3 4 5 ...18 19 20
以上資料列印十行
示例見:02_while_embed.py
練習:
輸入一個數,列印指定寬度的正方形
如:請輸入:5
列印結果:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
break 語句:
作用:
用於迴圈語句(while,for語句)中,用來終止當前迴圈語句的執行
break說明:
1,當break語句執行後,此迴圈語句break之後的語句將不再執行
2,break語句通常和if語句組合使用
3,break語句終止迴圈時,迴圈語句的else子句的語句將不會執行
4,break語句只能終止當前迴圈語句的執行,如果有迴圈巢狀時,不會跳出巢狀的外重迴圈
5,break語句只能在迴圈語句(while,for語句)內部使用
示例見:
04_break.py
死迴圈:
死迴圈是指迴圈條件一直成立的迴圈
死迴圈通常用break語句來終止迴圈
死迴圈的else子句永遠不會執行
示例:
while True:
n = int(input(“請輸入:”))
if n == 0:
break
print(n)
練習:
1,任意輸入一些整數,每次輸入一個,當輸入負數時結束輸入,當輸入完成後列印輸入所有數的和
2,寫程式用while實現列印三角形,要求輸入一個整數表示三角形的寬度和高度,打印出如下的三種直角三角形:
1)*
**
***
****
2)
****
***
**
*
3)
****
***
**
*
3,寫程式求多項式的和:
1/1 - 1/3 + 1/5 - 1/7 + 1/9.....+1/(2*n-1)的和
n取最大值:1000000
1)列印這個和
2)列印這個和乘以4的值(看看這個數眼熟不)
☆for 語句
作用:
用來遍歷可迭代物件的資料元素
可迭代物件是指能依次獲取資料元素的物件
可迭代物件包括:
字串 str
--以下後會再講---
列表 list
元祖 tuple
字典 dic
集合 set
...
for語句語法:
for 變數列表 in 可迭代物件:
語句塊1
else:
語句塊2
示例:
code/01_for.py
練習:
任意輸入一個字串,判斷這個字串中有幾個‘ ’,
(不允許用s.count()方法,建議用for語句)
for 語法說明:
1,可迭代物件每次提供一個元素依次賦值給變數列表中的變數,賦值完畢後執行
語句塊1,重複執行此步驟,直到可迭代物件不能提供資料為止
2,可迭代物件提供完所有元素後,執行else子句部分的語句塊2,然後退出此for語句
3,else子句都可以忽略(同while語句類似)
4,當在迴圈內部用break終止迴圈時,else子句部分語句不會執行
range 函式:
格式見:
>>>help(range)
函式:
range(stop)
從0開始,每次生成一個整數後加1操作,直到stop為止(不包含stop)
range(start,stop[,step]),
從start開始,每次生成一個整數後移動step,
直到stop為止(不包含stop,且step可以為負整數)
作用:
用來建立一個生成一系列整數的可迭代物件(也叫整數序列生成器)
說明:
range返回的物件是可迭代物件,可以用於for語句中
示例:
range(4) #生成0,1,2,3
range(3~6) #生成3,4,5
range(1,10,2) #生成1,3,5,7,9
range(5,0,-2) #生成5,3,1
range(4,0) #空
練習:用for語句列印1-20的整數,列印在一行
練習:
1,求100以內有哪些整數與自身加1的乘積再對11求餘結果等於8.
1,計算1+3+5+...+99的和,用while和for兩種方法實現
for語句巢狀:
for語句內部可以放任何語句,包含for語句和while語句
示例:
for x in “ABC”:
for y in “123”:
print(x + y) **#輸出A1,A2,A3,B1,B2,B3,C1,C2,C3#**
示例:
思考count的值為多少
count = 0
for x in range(5):
for y in range(10):
count += 1
print(count) #50
print(x,y) #4,9
練習:
1,寫程式,輸入一個整數n代表正方形的寬度和高度,列印數字組成的正方形:
如:輸入5
列印1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
2,寫程式,輸入一個整數n代表正方形的寬度和高度,列印數字組成的正方形:
如:輸入5
列印1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
迴圈語句中的輔助語句:
continue語句:
作用:
用於迴圈語句(for,while語句)中,不再執行本次迴圈內continue之後的語句,
重新開始一次新的迴圈
說明:
1,在while語句中,執行continue語句將會直接跳轉到while語句的真值表達式處
重新判斷迴圈條件;
2,在for語句中,執行continue語句,將會從可迭代物件中取下一個元素,
繫結變數後再次進行迴圈。
示例:
見:03_continue.py
for x in range(5):
if x == 2:
continue
print(x)
練習;
輸入一個整數用begin繫結,再輸入一個整數用end繫結,打印出begin~end
(包含end)的所有偶數
#用while迴圈實現列印10以內的偶數
i = 0
while i < 10:
print(i)
i += 2
☆用while和continue實現的方法:
見04_while_continue.py
練習:
求1~100(包含100)之間所有不能被5,7,11整除的數的和是多少
(建議用continue語句實現)
☆迴圈總結:
while 語句:可用於任何物件的迴圈
for 語句:只可用於可迭代物件的迴圈
- 字串
- range()函式
break 語句
continue 語句
練習:
輸入一個整數n,判斷這個整數是否是素數(prime)
(素數是指只能被1和自身整除的數)
如:2,3,5,7,11...
方法:用排除法,一旦n能被2~(n-1)的數整除就不是素數,否則就一定是素數