• 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 子句就会执行。

     

  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247210.html
Copyright © 2020-2023  润新知