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:
              statement(s)
            else:
              statement(s)
          - 如果在条件表达式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:
          statement(s)

       elif expression2:
           statement(s)

       elif expression3:
           statememt(s)
       else :
           statememt(s)


      -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:
                   statement(s)
                   if expression2:
                       statement(s)
                else :
                    statememt(s)
范例:
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......"