最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 深入理解Python的流程控制

    正文概述    2020-10-04   256

    深入理解Python的流程控制

    if 语句

    也许最著名的语句是 if 语句了。

    例如:

    >>> x = int(input("Please enter an integer: "))
    Please enter an integer: 42
    >>> if x < 0:
    ...     x = 0
    ...     print('Negative changed to zero')
    ... elif x == 0:
    ...     print('Zero')
    ... elif x == 1:
    ...     print('Single')
    ... else:
    ...     print('More')
    ...

    这边可以有 0 个或者多个 elif 部分,并且 else 部分是可选的。关键字 elif 是 'else if' 的缩写,它有助于避免过度缩进。 一个 if... elif ... elif ... 序列可以替代其他语言中的 switch 或 case 语句。

    for 语句

    Python 中 for 语句有点不同于 C 和 Pascal 中的 for 语句。Python 的 for 语句按照项目在序列中出现的顺序迭代任何序列(列表或字符串),而不是总是迭代数学的算术级数(如 Pascal 中),或者让用户能够定义迭代步骤和停止条件(如 C),例如(没有双关语):

    >>> # 测量字符串:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print(w, len(w))
    ...
    cat 3
    window 6
    defenestrate 12

    如果你需要修改序列在循环内的迭代(例如复制所选项目),建议你先复制。迭代序列操作并不会隐式地复制。切片方法使这一操作特别方便:

    >>> for w in words[:]:  # 循环遍历整个列表的切片副本。
    ...     if len(w) > 6:
    ...         words.insert(0, w)
    ...
    >>> words
    ['defenestrate', 'cat', 'window', 'defenestrate']

    使用 for w in words:,该示例将尝试创建一个无穷列表,反复的插入 defenestrate 。

     range() 函数

    如果你需要迭代一系列的数字,内建的函数 range() 会非常有用。如,生成等差数列:

    >>> for i in range(5):
    ...     print(i)
    ...
    0
    1
    2
    3
    4

    给定的停止位是不会出现在生成的序列中的; range(10) 生成 10 个值,是长度为 10 的序列的项的合法指数。可以让区间开始于其他的数字,或者指定不同的增量(甚至是负数;有时候这被叫做 ‘步长’):

    range(5, 10)
       5, 6, 7, 8, 9
    
    range(0, 10, 3)
       0, 3, 6, 9
    
    range(-10, -100, -30)
      -10, -40, -70

    要遍历一个序列的索引,你可以像下面这样组合 range() 和 len() :

    >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
    >>> for i in range(len(a)):
    ...     print(i, a[i])
    ...
    0 Mary
    1 had
    2 a
    3 little
    4 lamb

    然而,在大多数情况下,使用 enumerate() 函数更方便,可以看 循环技术.

    如果你直接打印一个区间的话,会发生奇怪的事情:

    >>> print(range(10))
    range(0, 10)

    在很多方面, range() 返回的对象的行为像列表,但实际上它不是。它是一个对象,当你迭代它的时候,会连续的返回整个序列的项目,但不会真的创建列表,从而节省空间。

    我们称这样的对象为 可迭代的 ,也就是说,它很适合于当作函数或者构造函数的目标,它们期望从这里可以获得连续的项目直到耗尽。我们已经看到 for 语句是一个 迭代器 。list() 函数是另一个;它可从可迭代对象中创建列表:

    >>> list(range(5))
    [0, 1, 2, 3, 4]

    break 和 continue 语句,以及循环上的 else 子句

    break 语句,类似于 C ,会打破 for 或 while 循环的最内层。

    循环语句可能有 else 子句;它会在列表耗尽(用  for )从而终止循环或者条件为假(用  while )的时候被执行,而不是循环被 break 语句终止的时候;这被下面的这个查找素数的循环例证了:

    >>> for n in range(2, 10):
    ...     for x in range(2, n):
    ...         if n % x == 0:
    ...             print(n, 'equals', x, '*', n//x)
    ...             break
    ...     else:
    ...         # 没有找到一个因数导致的循环失败
    ...         print(n, 'is a prime number')
    ...
    2 is a prime number
    3 is a prime number
    4 equals 2 * 2
    5 is a prime number
    6 equals 2 * 3
    7 is a prime number
    8 equals 2 * 4
    9 equals 3 * 3

    (是的,这是正确的代码。密切关注: for 循环的 else 子句,不是 if 语句。)

    当在循环使中使用 else 子句时,与其说很类似于 if 语句,不如说更类似于 try 语句中的 else 子句:一个 try 语句的 else 子句会在没有异常发生的时候执行,而一个循环的 else 子句会在没有 break 发生的时候执行。要了解更多 try 语句和异常,请看 异常处理.

    continue 语句,也是从 C 借来的,用于继续循环的下一次迭代:

    >>> for num in range(2, 10):
    ...     if num % 2 == 0:
    ...         print("Found an even number", num)
    ...         continue
    ...     print("Found a number", num)
    Found an even number 2
    Found a number 3
    Found an even number 4
    Found a number 5
    Found an even number 6
    Found a number 7
    Found an even number 8
    Found a number 9

     pass 语句

    pass 语句什么也不做。它可以用于语法上需要,但程序不需要做什么的时候。例如:

    >>> while True:
    ...     pass  # 等待键盘中断(Ctrl+C)
    ...

    通常也用于创建小类的时候:

    >>> class MyEmptyClass:
    ...     pass
    ...

    下载网 » 深入理解Python的流程控制

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元