Python條件與循環

在程序的執行過程中,經常要使用條件判斷語句決定程序的執行流轉,還要使用循環語句進行相同代碼的重複執行,它們在任何語言中都是非常重要的組成部分,熟練掌握才能更好的控制程序。以下實現過程,本人在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語句是,後面要用到條件表示式和關係運算符,他們可以經過運算得到布爾值。語法如下:

操作數 關係運算符 操作數

兩個操作數使用關係運算符進行比較,得到布爾值。
常用的關係運算符如下:
Python條件與循環

比如:

>>> 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”,還有其他的替代符,如圖:
Python條件與循環

替代符實例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)邏輯運算符

如圖:
Python條件與循環

實例如下:

[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

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章