在程序的執行過程中,經常要使用條件判斷語句決定程序的執行流轉,還要使用循環語句進行相同代碼的重複執行,它們在任何語言中都是非常重要的組成部分,熟練掌握才能更好的控制程序。以下實現過程,本人在CentOS 7系統(默認是Python 2.7.5)中實現。
博文大綱:
一、Python條件判斷
1.if條件語句
2.條件表達式與關係運算符
3.if-else條件語句
4.多重if語句
5 if語句的常見問題
二、Python的循環
1.while循環
2.for循環
3.循環控制
1)break
2)continue
一、Python條件判斷
條件語句是根據條件表達式的不同計算結果,使程序流轉到不同的代碼塊。Python中的條件語句是if語句和if else語句。
1.if條件語句
if語句用於判斷某個條件是否成立,如果成立,則執行語句內的程序,否則跳過if語句執行後面的內容,語法格式如下:
if(條件):
語句塊
if語句的執行過程時:如果條件的布爾值爲True,則執行語句塊;否則跳過語句塊,繼續執行後面的語句。語句塊是一組程序語句,Python的語法中沒有用Java等語言中的花括號表示一組語句,而是採用空格縮進的方式表示一組語句,通常用4個空格表示一組語句,使程序員在編碼時減少了代碼的工作量。
實例1如下:
[root@localhost ~]# vim 1.py
#coding:utf-8 //由於是在Linux環境下,需要使用“utf8”聲明一下,不然會出現中文亂碼的情況
m=100 //定義一個變量
if(m>90): //進行判斷,冒號結尾,如果輸出以下內容
print "Double kill"
print "Triple kill" //注意縮進空格(這兩條語句都是同樣的縮進情況,所以屬於一個語句塊)
[root@localhost ~]# python 1.py //使用python命令執行腳本
Double kill
Triple kill
實例2如下:
#coding:utf-8
score=input() //input()表示變量的內容等待從鍵盤輸入
print score >= 60 //經過運算得到布爾值
if score >=60: //冒號結尾,如果滿足條件輸出“合格”
print "合格"
[root@localhost ~]# python 2.py //執行python腳本
80
True
合格
2.條件表達式與關係運算符
使用if語句是,後面要用到條件表示式和關係運算符,他們可以經過運算得到布爾值。語法如下:
操作數 關係運算符 操作數
兩個操作數使用關係運算符進行比較,得到布爾值。
常用的關係運算符如下:
比如:
>>> print 10==9
False
>>> print 10!=9
True
3.if-else條件語句
if語句還可以加上else關鍵字,根據條件判斷,決定執行不同的語句塊,當條件爲True時,執行語句塊1,當條件爲False是,執行語句2.語法如下:
if(條件):
語句塊1
else:
語句塊2
實例如下:
[root@localhost ~]# vim 3.py
#coding:utf-8
print "請輸入成績"
source=input()
if source >= 60:
print "合格" //滿足條件打印這個語句塊內容
else:
print "不合格" //不滿足時,打印這個語句塊內容
[root@localhost ~]# python 3.py
請輸入成績
80
合格
[root@localhost ~]# python 3.py
請輸入成績
40
不合格
if-else語句是在需要根據條件決定程序需要執行的內容時使用。語法上要注意if和else後面都要使用冒號,他們前面的空格縮進都是相同的,表示它們是一個整體,而它們對應的語句塊也是同級的,空格縮進也是相同的,整體的代碼看起來比較簡潔、易懂。
4.多重if語句
使用if-else通過條件判斷程序能夠有兩條執行路徑,但有時還需要更多條路徑進行處理,這時可以加入elif關鍵字進行處理。語法如下:
if(條件1):
語法塊1
elif(條件2)
語句塊2
elif(條件3)
語句塊3
……
else:
語句塊
實例如下:
[root@localhost ~]# vim 4.py
#coding:utf-8
score=input()
if (score>=90):
print '優秀'
elif (score>=80):
print'良好'
elif (score>=70):
print '合格'
else:
print '不合格'
[root@localhost ~]# python 4.py
90
優秀
[root@localhost ~]# python 4.py
80
良好
[root@localhost ~]# python 4.py
70
合格
[root@localhost ~]# python 4.py
60
不合格
使用鍵盤輸入不同的值,輸出的結果不同,執行了不同的語句塊。其中else語句是一個可選項,可以有也可以沒有,需要根據程序的需要靈活掌握。
5. if語句的常見問題
(1)出現邏輯錯誤
[root@localhost ~]# vim 1.py
#coding:utf-8
score=input()
if score >=60: //條件的空格是可以省略的,沒有問題
print '合格'
if score >=70:
print '良好'
if score >=80:
print '優秀' //無法實現最後想要的效果
注意:if語句的執行過程是,從上往下,找到即停!
(2)語句塊沒有縮進
實例1如下:
[root@localhost ~]# vim 1.py
#coding:utf-8
score=input()
if score >=90:
print '優秀' //語句塊沒有注意縮進的問題
實例2如下:
#coding:utf-8
score=input()
if score >=90:
print '優秀'
print 'ok' //同一個語句塊,縮進的位置不同
這兩種情況,編譯器就會直接報錯!
(3)條件表達式的冒號
一定要注意:條件表達式後的冒號,千萬千萬不要忘記!
二、Python的循環
編寫程序時,經常有代碼需要重複運行,Python提供了while和for進行循環。
1.while循環
while循環用於已知的循環次數(根據條件進行判斷)!
(1)while循環可以根據條件進行判斷,決定是否要循環執行語句塊。語法如下:
while 循環條件:
循環操作語句
循環條件後也是使用冒號,然後縮進寫循環操作語句,先判斷條件是否成立,如果爲True ,則執行循環操作語句,如果爲False,則跳出循環。
實例1如下:
[root@localhost ~]# vim 1.py
#coding:utf-8
count=0
while (count<5):
count = count+1
print count
[root@localhost ~]# python 1.py
1
2
3
4
5
實例2如下:
[root@localhost ~]# vim 2.py
#coding:utf-8
i=1
sum=0
while i <=3: //循環條件
print '請輸入第%d門課程的考試成績' %i //%d表示格式化整數型。%i表示調取變量i的值賦值給%d
sum = sum + input() //執行的循環操作
i = i + 1
avg = sum / (i-1)
print '3門課程的平均成績是%d' %avg //格式化整數型,%avg表示將avg的值賦值給%d
[root@localhost ~]# python 2.py
請輸入第1門課程的考試成績
70
請輸入第2門課程的考試成績
80
請輸入第3門課程的考試成績
90
3門課程的平均成績是80
字符串格式化中可以使用的替代符除了“%d”,還有其他的替代符,如圖:
替代符實例1如下:
[root@localhost ~]# vim 3.py
#coding:utf-8
num=5
numStr="5"
numF=5.55
print "第%d名" %num
print "第%s名" %numStr
print "分數是%f" %numF
[root@localhost ~]# python 3.py
第5名
第5名
分數是5.550000
替代符實例2如下:
[root@localhost ~]# vim 4.py
#coding:utf-8
first=1
second=2
print "第%d名和第%d名" %(first,second) //使用時,注意變量的順序,位置不能放錯
[root@localhost ~]# python 4.py
第1名和第2名
(2)python腳本中,“#”也是註釋的意思跟shell腳本一樣,但是python的註釋要求是“#+空格”,其實“#”就已經可以了!
(3)while循環嵌套使用,比如:
[root@localhost ~]# vim 5.py
#coding:utf-8
j=1 //初始化外層循環計數器j
prompt = '請輸入學生姓名'
while j<=2: //定義外層循環
sum =0 //總成績情零
i=1 //初始化內層循環計數器i
name=raw_input(prompt) //raw_input表示:讀取標準輸入的字符串
while i<=3: //內層循環
print '請輸入第%d門課程的成績' %i
sum = sum + input()
i = i + 1
avg = sum / (i-1)
print '%s的3門課程的平均成績是:%d' %(name,avg)
j = j + 1
print '學生成績輸入完成'
[root@localhost ~]# python 5.py
請輸入學生姓名lzj
請輸入第1門課程的成績
70
請輸入第2門課程的成績
80
請輸入第3門課程的成績
90
lzj的3門課程的平均成績是:80
請輸入學生姓名lzj1
請輸入第1門課程的成績
90
請輸入第2門課程的成績
80
請輸入第3門課程的成績
70
lzj1的3門課程的平均成績是:80
學生成績輸入完成
2.for循環
for用於未知的循環次數(遍歷元素的方式)!
1)for循環的幾種方式
語法結構:
for 變量 in 集合:
語句塊
常用的幾種使用方式。
(1)for循環對字符串進行遍歷,逐個獲得字符串中的每個字符,比如:
[root@localhost ~]# vim 1.py
#coding:utf-8
for i in 'python':
print 'Current letter:%s' %i
[root@localhost ~]# python 1.py
Current letter:p
Current letter:y
Current letter:t
Current letter:h
Current letter:o
Current letter:n
(2)for循環可以對列表或元組進行遍歷,比如:
[root@localhost ~]# vim 2.py
#coding:utf-8
j=['abc','cba','bca']
for i in j:
print i
[root@localhost ~]# python 2.py
abc
cba
bca
(3)需要循環操作相同的內容時,可以用for循環和range()函數結合使用。比如:
[root@localhost ~]# vim 3.py
#coding:utf-8
print range(0,5)
print range(0,5,2)
//range()函數的作用是初始值,終止值,遞增的頻率(如不指定,則表示1),默認不輸出終止值
[root@localhost ~]# python 3.py
[0, 1, 2, 3, 4]
[0, 2, 4]
2)for循環實例
[root@localhost ~]# vim 4.py
#coding:utf-8
sub=('python','mysql','linux')
sum=0
for i in sub:
print '請輸入%s考試成績:' %i
score = input()
sum += score //相當於sum+score
avg = sum / len(sub) //len()表示求列表長度
print '平均成績是%d' %avg
[root@localhost ~]# python 4.py
請輸入python考試成績:
80
請輸入mysql考試成績:
90
請輸入linux考試成績:
85
平均成績是85
3)邏輯運算符
如圖:
實例如下:
[root@localhost ~]# vim 1.py
#coding:utf-8
score = 180
if (score<0 or score>100):
print '成績錯誤,不能小於0或大於100'
[root@localhost ~]# python 1.py
成績錯誤,不能小於0或大於100
[root@localhost ~]# vim 2.py
#coding:utf-8
score = 180
if (not (score>=0 and score<=100)): //使用not取反
print '成績錯誤,不能小於0或大於100'
[root@localhost ~]# python 2.py
成績錯誤,不能小於0或大於100
4)for循環嵌套
如下:
[root@localhost ~]# vim 1.py
#coding:utf-8
stu=['小明','小張']
sub=['python','mysql','linux']
for i in stu: //第一層循環對學生姓名進行遍歷
sum = 0
for j in sub: //第二層循環學習科目進行遍歷
print '請輸入%s的%s考試成績:' %(i,j)
score=input()
sum +=score
avg = sum / len(sub)
print '%s的平均成績是%d' %(i,avg)
[root@localhost ~]# python 1.py
請輸入小明的python考試成績:
90
請輸入小明的mysql考試成績:
80
請輸入小明的linux考試成績:
70
小明的平均成績是80
請輸入小張的python考試成績:
80
請輸入小張的mysql考試成績:
70
請輸入小張的linux考試成績:
60
小張的平均成績是70
3.循環控制
當使用while和for循環操作時,有可能需要改變循環的正常順序,這時就需要用循環控制語句實現,循環控制語句有break和continue。
1)break
在循環的語句塊中使用break,可以跳出整個循環。比如:
[root@localhost ~]# vim 1.py
#coding:utf-8
stu=['小明','小張']
sub=['python','mysql','linux']
for i in stu: //第一層循環
sum = 0
for j in sub: //第二層循環
print '請輸入%s的%s考試成績:' %(i,j)
score=input()
if (score<0 or score>100): //進行判斷
print '成績無效!'
break //跳出整個二層循環
sum +=score
avg = sum / len(sub)
print '%s的平均成績是%d' %(i,avg)
[root@localhost ~]# python 1.py
請輸入小明的python考試成績:
180
成績無效!
小明的平均成績是0
請輸入小張的python考試成績:
180
成績無效!
小張的平均成績是0
2)continue
continue循環只是跳過當前一輪循環體的剩餘語句,重新測試循環狀態,進行下一輪循環。比如:
[root@localhost ~]# vim 1.py
#coding:utf-8
stus=['小明','小張']
subs=['python','mysql','linux']
for stu in stus: //第一層for循環
sum = 0
i=0
while (i<len(subs)): //第二層while循環
print '請輸入%s的%s考試成績:' %(stu,subs[i])
score=input()
if (score<0 or score>100):
print '成績無效!'
continue //跳到if語句重新進行判斷
i = i + 1
sum +=score
avg = sum / len(subs)
print '%s的平均成績是%d' %(stu,avg)
[root@localhost ~]# python 1.py
請輸入小明的python考試成績:
180
成績無效! //輸出之後不跳出循環,等待繼續輸入
請輸入小明的python考試成績:
10
請輸入小明的mysql考試成績:
20
請輸入小明的linux考試成績:
30
小明的平均成績是20
請輸入小張的python考試成績:
80
請輸入小張的mysql考試成績:
180
成績無效!
請輸入小張的mysql考試成績:
10
請輸入小張的linux考試成績:
90
小張的平均成績是60
———————— 本文至此結束,感謝閱讀 ————————