python 流程控制
1、if语句
python的if 语句类似其它语言,if 语句包含一个逻辑表达式,使用表达式比较,在比较结果的基础上作出决定。 -if experssion(条件表达式): statement(s)(声明) # python 使用缩进作为其语句分组的方法,建议使用4个空格代替缩进。 #if语句代码段的开始有两个冒号来决定; | 例子: #!/usr/bin/pythonif 1<2: print "ok"[root@zabbix tools]# python 2.py ok 如果修改为: #!/usr/bin/pythonif 1>2: print "ok"执行后没有任何提示。#容易犯的错误。*没有缩进 [root@zabbix tools]# python 2.py File "2.py", line 4 print "ok" ^ IndentationError: expected an indented block |
if 单分支 *逻辑值(bool)用来表示诸如:对于错,真于假,空于非空等概念。 *逻辑值包含了两个值 -True:表示非空的量(比如:string,tuple,list,set,dictonary等),所有非零数。 -False:表示0,None,空的量等。 | #!/usr/bin/pythonif 1+1: print "ok"print "yes ok"[root@zabbix tools]# python 2.py okyes ok #此处的表示式1+1既不是True 也不是 False,也会产生True的效果 #如果此处将1+1修改为1-1 :#!/usr/bin/pythonif 1-1: print "ok"print "yes ok"[root@zabbix tools]# python 2.py yes ok #注意此处的ok没有打印,相当于False! #!/usr/bin/pythonif 1: print "ok"[root@zabbix tools]# python 2.py ok#!/usr/bin/pythonif 0: print "ok"[root@zabbix tools]# python 2.py [root@zabbix tools]# #直接返回1或0 #调用函数,返回1 ,观察结果。 #!/usr/bin/pythondef fun(): return 1if fun: print "ok"[root@zabbix tools]# python 2.py ok |
else 双分支
- 如果在条件表达式if语句解析为0或false值。else语句是一个可选的语句,并最多只能有一个else 语句。 | 范例: #!/usr/bin/pythondef fun(): return 0print fun()if fun(): print "ok"else: print "bad"[root@zabbix tools]# python 2.py 0bad #注意else 后要有冒号,且要有相对应的if。 |
if elif 多分支
elif语句是可选的,可以有任意数量的elif。 | 范例: #!/usr/bin/pythonx = 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:80B[root@zabbix tools]# python 2.py please input:8bad |
嵌套的if...elif.... else构造
| 范例: x = -1y = 99if(x >= 0): if(x > 0): #嵌套的if语句 y = 1 else: y = 0else: y = -1print "y =", y输出为y=-1 #尽量减少避免嵌套语句的使用,不便于阅读。 |
and 、 or 、 not逻辑运算符 | 范例: #!/usr/bin/pythonx = 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:100please input y:100A[root@zabbix tools]# python 2.py please input x:60please input y:50bad[root@zabbix tools]# python 2.py please input x:90please input y:60B |
2、for 循环
在python for 循环遍历序列,如一个列表或一个字符。 -for 循环语法: for iterrating_var in sequence: statements(s) 注:如果一个序列包含一个表达式列表,它是第一个执行。然后,该序列中的第一项复制给迭代变量iterating_var.接下来,执行语句块。列表中的每个项目分配到iterating_var,代码块被执行,直到真个序列被耗尽。 格式遵循代码块缩进原则。 | #!/usr/bin/pythonfor x in "abcd": print "hello word"[root@zabbix tools]# python 3.py hello wordhello wordhello wordhello 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/pythonfor x in range(1,20,3): print x,"hello word"[root@zabbix tools]# python 3.py 1 hello word4 hello word7 hello word10 hello word13 hello word16 hello word19 hello word | ||
计算从1+100 | #!/usr/bin/pythonnum=0for x in range(1,101): num+=x #num=num+xprint num [root@zabbix tools]# python 3.py 5050 | ||
-迭代序列指数(索引) —遍历每个项目的另一种方法是由序列本身的偏移指数(索引): | #!/usr/bin/pythons="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.py111222333 #也可以通过字典中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/pythonc={1:111,2:222,3:333}print c.items()for k,v in c.items(): print k print velse: print "ending"[root@zabbix tools]# python 5.py [(1, 111), (2, 222), (3, 333)]111122223333ending | ||
如果是for循环非正常执行结束,else:是不执行的 | #!/bin/usr/pythonimport time #导入时间模块for x in range(10): print x time.sleep(1) if x==2: break print "#"*50else: print "ending"for x in range(3): print x[root@zabbix tools]# python 5.py 0##################################################1##################################################2012 | ||
exit() 程序跳出: | #!/bin/usr/pythonimport timefor x in range(10): print x time.sleep(1) if x==2: break print "#"*50else: print "ending"for x in range(3): print x[root@zabbix tools]# python 5.py 0##################################################1##################################################2 | ||
continue跳出当次循环的余下语句,进入下次循环: | #!/bin/usr/pythonimport timefor 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##################################################23##################################################4###################################################注意执行在2的时候,没有打印#号 。 | ||
pass 占位桩(在语句中执行pass时未做任何操作): | #!/bin/usr/pythonimport timefor x in range(10): print x time.sleep(1) if x==2: pass if x==3: exit() print "#"*50else: 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......"
转载于:https://blog.51cto.com/linuxboys/1652759