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......"