zoukankan      html  css  js  c++  java
  • Python基础:06条件和循环

    1:条件表达式(三元操作符)

            Python 在很长的一段时间里没有条件表达式(C ? X : Y), 或称三元运算符。人们试着用 and 和 or 来模拟它, 但大多都是错误的。 根据 FAQ , 正确的方法(并不唯一)是:(C and [X] or [Y])[0]。

            唯一的问题是社区不同意这样的语法。最后 Python 2.5 集成的语法确定为: X if C else Y

    在 2.5以前的版本中, Python 程序员最多这样做(其实是一个 hack):

    >>> smaller = (x < y and [x] or[y])[0]
    >>> smaller
    3

            在 2.5 和更新的版本中, 你可以使用更简明的条件表达式:

    >>> smaller = x if x < y else y
    >>> smaller
    3

     

    2:for语句

            Python中的for 语句提供了 Python 中最强大的循环结构。它可以遍历序列成员,可以用在 列表解析 和 生成器表达式中,它会自动地调用迭代器的 next()方法,捕获 StopIteration 异常并结束循环(所有这一切都是在内部发生的)。

            和传统语言(例如 C/C++或Java)中的 for 语句不同,Python 的 for 更像是 shell 或是脚本语言中的 foreach 循环。

     

            使用迭代器做 for 循环的代码与使用序列条目几乎完全相同。事实上在大多情况下, 你无法分辨出你迭代的是一个序列还是迭代器。

            唯一的区别就是 for 语句会做一些额外的事情。迭代器对象有一个 next() 方法, 调用后返回下一个条目。所有条目迭代完后, 迭代器引发一个 StopIteration 异常告诉程序循环结束。 for 语句在内部调用 next() 并捕获异常。

     

    3:循环与else

            Python中,可以在 while 和 for 循环中使用 else 语句。在循环中使用时, else子句只在循环完成后执行, 也就是说 break 语句也会跳过 else 块。

            以寻找最大约数为例。 代码如下:

    def showMaxFactor(num):
            count = num / 2
            while count > 1:
                    if num % count == 0:
                            print 'largest factor of %d is %d' % (num, count)
                            break
                    count -= 1
            else:
                    print num, "is prime"

     

            同样地,for 循环也可以有 else 用于循环后处理。 它和while 循环中的else 处理方式相同。 只要for 循环是正常结束的(不是通过 break ), else 子句就会执行。

     

  • 相关阅读:
    百度--买帽子
    网易--双核处理器
    京东--通过考试
    简单错误记录
    链表中的倒数第k个结点
    数值的整数次方
    二进制中1的个数
    TCP 三次握手
    旋转数组的最小数字
    用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247210.html
Copyright © 2011-2022 走看看