python 基础 条件语句

发布时间:2019-07-14 10:00:28编辑:auto阅读(1378)


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

                                                                      

关键字