python 流程控制
1、if語句
python的if 語句類似其它語言,if 語句包含一個邏輯表達式,使用表達式比較,在比較結果的基礎上作出決定。 -if experssion(條件表達式): statement(s)(聲明) # python 使用縮進作爲其語句分組的方法,建議使用4個空格代替縮進。 #if語句代碼段的開始有兩個冒號來決定; | 例子:#!/usr/bin/python if 1<2: print "ok" [root@zabbix tools]# python 2.py ok如果修改爲: #!/usr/bin/python if 1>2: print "ok" 執行後沒有任何提示。 #容易犯的錯誤。 *沒有縮進 [root@zabbix tools]# python 2.py File "2.py", line 4 print "ok" ^IndentationError: expected an indented block #此類異常99%都是因爲縮進問題導致。 |
if 單分支 *邏輯值(bool)用來表示諸如:對於錯,真於假,空於非空等概念。 *邏輯值包含了兩個值 -True:表示非空的量(比如:string,tuple,list,set,dictonary等),所有非零數。 -False:表示0,None,空的量等。 | #!/usr/bin/python if 1+1: print "ok" print "yes ok" [root@zabbix tools]# python 2.py ok yes ok#此處的表示式1+1既不是True 也不是 False,也會產生True的效果 #如果此處將1+1修改爲1-1 : #!/usr/bin/python if 1-1: print "ok" print "yes ok" [root@zabbix tools]# python 2.py yes ok#注意此處的ok沒有打印,相當於False! #!/usr/bin/python if 1: print "ok" [root@zabbix tools]# python 2.py ok #!/usr/bin/python if 0: print "ok" [root@zabbix tools]# python 2.py [root@zabbix tools]# #直接返回1或0#調用函數,返回1 ,觀察結果。 #!/usr/bin/python def fun(): return 1 if fun: print "ok" [root@zabbix tools]# python 2.py ok |
else 雙分支 -if expression: - 如果在條件表達式if語句解析爲0或false值。else語句是一個可選的語句,並最多只能有一個else 語句。 | 範例:#!/usr/bin/python def fun(): return 0 print fun() if fun(): print "ok" else: print "bad" [root@zabbix tools]# python 2.py 0 bad#注意else 後要有冒號,且要有相對應的if。 |
if elif 多分支 - if expression: -elif語句可以讓你檢查多個表達式爲真值,並執行一個代碼塊,elif語句是可選的,可以有任意數量的elif。 | 範例:#!/usr/bin/python x = int(raw_input("please input:")) if x>=90: print "A" elif x>=80 : print "B" elif x>=70: print "c" else : print "bad" [root@zabbix tools]# python 2.py please input:80 B [root@zabbix tools]# python 2.py please input:8 bad |
嵌套的if...elif.... else構造 - if expression: | 範例:x = -1 y = 99 if(x >= 0): if(x > 0): #嵌套的if語句 y = 1 else: y = 0 else: y = -1 print "y =", y 輸出爲y=-1#儘量減少避免嵌套語句的使用,不便於閱讀。 |
and 、 or 、 not邏輯運算符 | 範例:#!/usr/bin/python x = int(raw_input("please input x:")) y = int(raw_input("please input y:")) if x>=90 and y>=90: print "A" elif x>=80 or y>=80: print "B" else : print "bad" [root@zabbix tools]# python 2.py please input x:100 please input y:100 A [root@zabbix tools]# python 2.py please input x:60 please input y:50 bad [root@zabbix tools]# python 2.py please input x:90 please input y:60 B |
2、for 循環
在python for 循環遍歷序列,如一個列表或一個字符。 -for 循環語法: for iterrating_var in sequence: statements(s)注:如果一個序列包含一個表達式列表,它是第一個執行。然後,該序列中的第一項複製給迭代變量iterating_var.接下來,執行語句塊。列表中的每個項目分配到iterating_var,代碼塊被執行,直到真個序列被耗盡。 格式遵循代碼塊縮進原則。 | #!/usr/bin/python for x in "abcd": print "hello word" [root@zabbix tools]# python 3.py hello word hello word hello word hello word#"x"迭代變量可以是任意值,到序列”abcd“ 取到值後執行代碼段"hellow word" #注意:開啓語句執行。 #"迭代",指重複執行一個指令。 | ||
循環結構是用於迭代多個項的for語句,迭代形式可以循環序列的所有成員。 *range(i,j,[,步進值]) #可以快速生成序列 -如果所創建的對象爲整數,可以用range。 -i爲初始數值, -j爲終止數值,但不包括在範圍內,步進值爲可選參數,不選的話默認爲1。 -i不選的話默認爲0 | 範例: >>> range(1,20,2) [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] #!/usr/bin/python for x in range(1,20,3): print x,"hello word" [root@zabbix tools]# python 3.py 1 hello word 4 hello word 7 hello word 10 hello word 13 hello word 16 hello word 19 hello word | ||
計算從1+100 | #!/usr/bin/python num=0 for x in range(1,101): num+=x #num=num+x print num [root@zabbix tools]# python 3.py 5050 | ||
-迭代序列指數(索引) —遍歷每個項目的另一種方法是由序列本身的偏移指數(索引): | #!/usr/bin/python s="hello" a=[1,2,3,4,"a"] b=(7,8,"x","y") c={1:111,2:222,3:333} for x in c: print c[x] [root@zabbix tools]# python 4.py 111 222 333#也可以通過字典中items 的方法獲取到裏面所有的鍵值段。 print c.items() [(1, 111), (2, 222), (3, 333)] #a,b,c,d=t t當中的值會依次賦給a,b,c,d,利用這個特性使用for 循環 #利用字典items()方法將字典中key、value以元組的方式返回。 for k,v in c.tiems(): print k print v | ||
在for 循環中正常結束之後else 就會執行 | #!/usr/bin/python c={1:111,2:222,3:333} print c.items() for k,v in c.items(): print k print v else: print "ending" [root@zabbix tools]# python 5.py [(1, 111), (2, 222), (3, 333)] 1 111 2 222 3 333 ending | ||
如果是for循環非正常執行結束,else:是不執行的 | #!/bin/usr/python import time #導入時間模塊 for x in range(10): print x time.sleep(1) if x==2: break print "#"*50 else: print "ending" for x in range(3): print x [root@zabbix tools]# python 5.py 0 ################################################## 1 ################################################## 2 0 1 2 | ||
exit() 程序跳出: | #!/bin/usr/python import time for x in range(10): print x time.sleep(1) if x==2: break print "#"*50 else: print "ending" for x in range(3): print x [root@zabbix tools]# python 5.py 0 ################################################## 1 ################################################## 2 | ||
continue跳出當次循環的餘下語句,進入下次循環: | #!/bin/usr/python import time for x in range(10): print x time.sleep(1) if x==2: continue print "#"*50 if x==4: exit() else: print "ending" for x in range(3): print x [root@zabbix tools]# python 5.py 0 ################################################## 1 ################################################## 2 3 ################################################## 4 ################################################### 注意執行在2的時候,沒有打印#號。 |
pass 佔位樁(在語句中執行pass時未做任何操作): | #!/bin/usr/python import time for x in range(10): print x time.sleep(1) if x==2: pass if x==3: exit() print "#"*50 else: print "ending" for x in range(3): print x [root@zabbix tools]# [root@zabbix tools]# python 5.py 0 ################################################## 1 ################################################## 2 ################################################## 3 |
4、while循環
while循環,直到表達式變爲假。表達的是一個邏輯表達式,必須返回一個true或false值。
語法:
while expression:
statement(s)
範例:
[root@zabbix tools]# cat while.py #!/usr/bin/python while True: print "#"*50
#上述是一個死循環!while會根據後邊的條件表示式進行判斷,當爲True的時候執行代碼段,所以在寫while語句的時候一定要有條件讓它結束。
[root@zabbix tools]# cat while.py #!/usr/bin/python while True: print "#"*50 x=raw_input("please input somethong,q fro quit:") if x == "q": break You have new mail in /var/spool/mail/root [root@zabbix tools]# python while.py ################################################## please input somethong,q fro quit:a ################################################## please input somethong,q fro quit:q [root@zabbix tools]# 或者直接寫在表達式裏: [root@zabbix tools]# python while.py ################################################## please input something ,q for quit: [root@zabbix tools]# cat while.py #!/usr/bin/python x = "" while x != "q": print "#"*50 x=raw_input("please input something ,q for quit:") if not x : break [root@zabbix tools]# #注意取反
while 中的else:
[root@zabbix tools]# python while.py ################################################## please input something ,q for quit: [root@zabbix tools]# python while.py ################################################## please input something ,q for quit:q ending...... [root@zabbix tools]# cat while.py #!/usr/bin/python x = "" while x != "q": print "#"*50 x=raw_input("please input something ,q for quit:") if not x : break else: print "ending......" # 當while中當代碼段執返回爲false時,會執行else,break是跳出。 [root@zabbix tools]# python while.py ################################################## please input something ,q for quit:w one more time~~~~ ################################################## please input something ,q for quit:w^H one more time~~~~ ################################################## please input something ,q for quit:c ################################################## please input something ,q for quit:q one more time~~~~ ending...... [root@zabbix tools]# cat while.py #!/usr/bin/python x = "" while x != "q": print "#"*50 x=raw_input("please input something ,q for quit:") if not x : break if x == "c": continue print "one more time~~~~" else: print "ending......"