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  
#此类异常99%都是因为缩进问题导致。

 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 expression:
              statement(s)
            else:
              statement(s)

          - 如果在条件表达式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 多分支

         

- if expression:
          statement(s)

       elif expression2:
           statement(s)

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



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构造


- if expression:
                   statement(s)
                   if expression2:
                       statement(s)
                else :
                    statememt(s)

范例:

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