在程序的執行過程當中,常常要使用條件判斷語句決定程序的執行流轉,還要使用循環語句進行相同代碼的重複執行,它們在任何語言中都是很是重要的組成部分,熟練掌握才能更好的控制程序。如下實現過程,本人在CentOS 7系統(默認是Python 2.7.5)中實現。python
博文大綱:
1、Python條件判斷
1.if條件語句
2.條件表達式與關係運算符
3.if-else條件語句
4.多重if語句
5 if語句的常見問題
2、Python的循環
1.while循環
2.for循環
3.循環控制
1)break
2)continuemysql
條件語句是根據條件表達式的不一樣計算結果,使程序流轉到不一樣的代碼塊。Python中的條件語句是if語句和if else語句。linux
if語句用於判斷某個條件是否成立,若是成立,則執行語句內的程序,不然跳過if語句執行後面的內容,語法格式以下:程序員
if(條件): 語句塊
if語句的執行過程時:若是條件的布爾值爲True,則執行語句塊;不然跳過語句塊,繼續執行後面的語句。語句塊是一組程序語句,Python的語法中沒有用Java等語言中的花括號表示一組語句,而是採用空格縮進的方式表示一組語句,一般用4個空格表示一組語句,使程序員在編碼時減小了代碼的工做量。sql
實例1以下:shell
[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以下:vim
#coding:utf-8 score=input() //input()表示變量的內容等待從鍵盤輸入 print score >= 60 //通過運算獲得布爾值 if score >=60: //冒號結尾,若是知足條件輸出「合格」 print "合格" [root@localhost ~]# python 2.py //執行python腳本 80 True 合格
使用if語句是,後面要用到條件表示式和關係運算符,他們能夠通過運算獲得布爾值。語法以下:ide
操做數 關係運算符 操做數
兩個操做數使用關係運算符進行比較,獲得布爾值。
經常使用的關係運算符以下:
函數
好比:學習
>>> print 10==9 False >>> print 10!=9 True
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後面都要使用冒號,他們前面的空格縮進都是相同的,表示它們是一個總體,而它們對應的語句塊也是同級的,空格縮進也是相同的,總體的代碼看起來比較簡潔、易懂。
使用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語句是一個可選項,能夠有也能夠沒有,須要根據程序的須要靈活掌握。
[root@localhost ~]# vim 1.py #coding:utf-8 score=input() if score >=60: //條件的空格是能夠省略的,沒有問題 print '合格' if score >=70: print '良好' if score >=80: print '優秀' //沒法實現最後想要的效果
注意:if語句的執行過程是,從上往下,找到即停!
實例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' //同一個語句塊,縮進的位置不一樣
這兩種狀況,編譯器就會直接報錯!
必定要注意:條件表達式後的冒號,千萬千萬不要忘記!
編寫程序時,常常有代碼須要重複運行,Python提供了while和for進行循環。
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 學生成績輸入完成
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]
[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
如圖:
實例以下:
[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
以下:
[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
當使用while和for循環操做時,有可能須要改變循環的正常順序,這時就須要用循環控制語句實現,循環控制語句有break和continue。
在循環的語句塊中使用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
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
———————— 本文至此結束,感謝閱讀 ————————