zoukankan      html  css  js  c++  java
  • Python基本语法_控制流语句_if/while/for

    目录

    前言

    控制流语句用于改变程序语句流(默认为自上而下顺序执行)的执行顺序,其中Python的基本控制流语句,主要有以下3种:
    1. if 语句:根据条件返回的结果执行相应的代码块
    2. for 循环:通过遍历容器对象的索引来实现循环
    3. while 循环:根据条件返回是否为True来判断是否执行循环体
    在本篇中主要会介绍Python中控制流语句,以及一些在应用上的经验。

    软件环境

    • 系统
      • Ubuntukylin 14.04
    • 软件
      • Python 2.7.6
      • IPython 4.0.0

    If 语句

    语法格式:

    if expression1:
        代码块  #expression1 == True
    elif expression2:
        代码块  #expression1 == False and expression2 == True
    else:
        代码块  #expression2 == False

    If语句可以根据expression的bool值来执行相应的代码组。需要注意的是,在Python中并没有switch..case语句来实现定值判断。但是可以使用elif语句和‘ == ’来实现类似的效果。
    代码组:以关键字开始的缩进相同的一组代码组成的代码块。其中首行句末的 : 号标识代码块的开始。即是在Python语法中,以关键字为首的语句行中必须以 : 结尾。
    一个域值判断的小例子:

    In [21]: %%file ifTest.py
    #!/usr/bin/env python
    #coding=utf8
    number1 = 10
    number2 = int(raw_input("Ple enter a number:"))
    if number2 < number1 :
        print "<"
    elif number2 > number1 :
        print ">"
    else :
        print "="
    print "Done"

    Output :

    In [30]: run ifTest.py
    Ple enter a number:20
    >
    Done
    
    In [31]: run ifTest.py
    Ple enter a number:1
    <
    Done
    
    In [32]: run ifTest.py
    Ple enter a number:10
    =
    Done

    注意:在if语句中的expression可以充分利用Python的运算、比较、逻辑等运算符来满足判断条件的需求。if语句根本上只在乎表达式最终返回的结果是 True or False 。同时,在Python的真值表中0表示False,非0表示True。请参考Pyethon运算符详解:http://blog.csdn.net/jmilk/article/details/48666475

    While循环

    语法格式:

    while expression:
        代码块   #expression == True
    else:
        代码块   #expression == False

    While语句需要根据expression的返回值来判断是否继续执行循环。值得注意的是,为了避免永循环的出现,一般需要写入控制循环次数或终止循环的条件。即是在循环过程中需要有expression == False的时候,而且当循环条件为False时,则执行else代码块。当然else语句是可选的,else代码块一般用于实现循环结束后的清理工作。同时While循环也可以使用下面的附加语句来实现循环中断。
    NOTE: else 关键字存在时也不一定必须执行,当 while 循环中有 break 时, else 不执行。

    break

    break语句会令语句流跳到循环体外,以此来提前终止循环,接着执行循环下面的语句。
    Note在嵌套循环中,break语句只会跳出本层循环,而不会跳出外层循环
    注意:通常结合if语句来实现:当满足条件时,则退出循环。下面是一个小例子:

    In [12]: cat breakTest.py
    #!/usr/bin/env python
    #coding=utf8
    i = 0
    while True:
        print "%d" % i ,
        i += 1
        if i > 10:break
    print "Done"
    
    In [13]: run breakTest.py
    0 1 2 3 4 5 6 7 8 9 10 Done
    

    continue

    相对的,有时并不希望终止整个循环操作,而是希望提前结束本次循环,并接着执行下一次循环,这时可以使用continue语句。continue语句会跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行expression,然后再进行下一次是否执行循环的判断。这样可以达到提高程序执行效率的效果。

    In [10]: cat continueTest.py
    #!/usr/bin/env python
    #coding=utf8
    import sys
    i = 101
    count = 0
    while (i > 0):
        i -= 1
        if i%5:
            continue
        print i,
        count += 1
    print "Done"
    print "Execution times:%d" % count        
    
    In [11]: run continueTest.py
    100 95 90 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0 Done
    Execution times:21  

    上面的小例子会将1-100之间能被5整除的数字打印出来。

    for 循环

    语法格式:

    for iterationVariable in iterationObject:
        代码块 #When the iterationObject in intertionVariable
    else:
        代码块 #when the loop completer

    Python的For循环完全区别于Java或C/C++等编程语言,其通过遍历一个容器中所有的索引来决定循环的次数和操作。
    其中容器可以是List、Tuple、Dictionary、String等,本质上是利用for循环的迭代器iterator,来逐个遍历容器中的项目,并且逐一赋值给迭代变量,然后执行代码块,直到遍历完成循环结束。

    遍历String:

    In [17]: %%file forStr.py
       ....: #!/usr/bin/env python
       ....: #coding=utf8
       ....: name = 'JMilk'
       ....: for n in name:
       ....:     print n,
       ....: print "Done"
       ....: 
    Writing forStr.py
    
    In [18]: run forStr.py
    J M i l k Done

    遍历Tuple

    In [19]: %%file forTuple.py
       ....: #!/usr/bin/env python
       ....: #coding=utf8
       ....: number = (1,2,3,4,5)
       ....: for n in number:
       ....:     print n,
       ....: print "Done"
       ....: 
    Writing forTuple.py
    
    In [20]: run forTuple.py
    1 2 3 4 5 Done

    遍历List

    In [21]: %%file forList.py
       ....: #!/usr/bin/env python
       ....: #coding=utf8
       ....: li = range(1,6)
       ....: for l in li:
       ....:     print l,
       ....: print "Done"
       ....: 
    Writing forList.py
    
    In [22]: run forList.py
    1 2 3 4 5 Done

    遍历Dictionary

    In [61]: cat forDic.py
    #!/usr/bin/env python
    #coding=utf8
    dic = {'name':'Jmilk','age':'23'}
    #Example1
    print dic.items()
    for key,value in dic.items():
        print "Example1:The key is %s and the value is %s" % (key,value)
    #Example2
    for key in dic:
        print "Example2:The key is %s and the value is %s" % (key,dic[key])
    
    print "Done"
    
    
    In [62]: run forDic.py
    [('age', '23'), ('name', 'Jmilk')]
    Example1:The key is age and the value is 23
    Example1:The key is name and the value is Jmilk
    Example2:The key is age and the value is 23
    Example2:The key is name and the value is Jmilk
    Done

    上面的例子使用了两种遍历字典的方法。
    Example1:先调用items( )将字典转化为List和Tuple的复合数据类型,再遍历每一个List中的Tuple元素。
    Example2:遍历Dictionary的key,调用dic[key]获取key映射的value。

    最后

    Python控制流语句具有非常强大的功能,例如:利用for循环来获取文件内容,实现Ddictionary到String的转换等等。尤其是for循环和List解析的特性会碰撞出非常有趣的火花。在往后的篇章里我们一起去记录。

    Jmilk

    相关阅读:

  • 相关阅读:
    暑假N天乐【比赛篇】 —— 2019牛客暑期多校训练营(第二场)
    莫比乌斯反演入门解析
    暑假N天乐【比赛篇】 —— 2019牛客暑期多校训练营(第一场)
    暑假N天乐 —— 多重+分组背包及变形
    暑假N天乐 —— 完全背包及变形
    暑假N天乐【比赛篇】 —— 牛客假日团队赛6
    暑假N天乐 —— 01背包及变形
    离线线段树 SPOJ
    [Python]数据类型、常量、变量和运算符(未完待续)
    [Python]从哪里开始学习写代码(未完待续)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13311072.html
Copyright © 2011-2022 走看看