莫烦python基础教程(二)

while循环与for循环

while 循环


基本使用

  • while 语句同其他编程语言中 while 的使用方式大同小异,主要结构如下:
while condition:
    expressions
  • 其中 condition 为判断条件,在 Python 中就是 True 和 False 其中的一个,如果为 True, 那么将执行 exexpressions 语句,否则将跳过该 while 语句块接着往下执行。

实例

  • 比如要打印出 0 - 9 的所有数据:
conditon = 0
while condition < 10:
    print(condition)
    condition = condition + 1
  • 输出的结果将是 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 第一行设置 condition 的 初始值为 0,在进行 while 判断的时候 0 < 10 为 True,将会执行 while 内部 的代码,首先先打印出该值,然后将 condition 值加 1,至此将完成一次循环;再 condition 的值与 10 进行比较,仍然为 True,重复如上过程,至到 condiiton 等于 10 后,不满足 condition < 10 的条件(False),将不执行 while 内部的内容,所以10不会被打印。

注意点

  • 在使用 while 句法的时候一定要注意在循环内部一定要修改判断条件的值,否则程序的while部分将永远执行下去。

  • 如果按以下程序执行,程序将一直打印出 I’m True,要停止程序,使用ctrl + c终止程序。

while True:
    print("I'm True")

高级主题

  • 在 Python 中除了常规比较操作{小于(<)、大于 (>)、不大于 (<=)、不小于 (>=)、等于 (==)、不等于 (!=)}会返回 True 和 False值,其他操作也会返回 True 和 False。
  • 数字

    • 整数和浮点数也能进行 Boolean 数据操作,如果该值等于0或者0.0将会返回False,其余的返回True。
    condition = 10
    while condition:
        print(condition)
        condition -= 1
    • 输出的结果将会是 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 在这里condition在while语句中,如果该值大于0,那么将会返回为True,执行循环内部语句,直至 condition 等于0,返回 False。
  • None 类型

    • 如果 while 后面接着的语句数据类型None, 将会返回 False。
  • 集合类型

    • 在Python中集合类型有list、tuple 、dict和set 等,如果该集合对象作为while判断语句, 如果集合中的元素数量为 0,那么将会返回False,否则返回True。
    • 下列程序将会返回 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,程序首先判断列表是否空,如果不为空,则打印出最后一个内容,然后使用切片操作去掉最后一个元素,并更新列表;如此重复,直至列表为空。
    a = range(10)
    while a:
        print(a[-1])
        a = a[:len(a)-1]
    

for 循环


基本使用

  • 不同编程语言都有for语言,比如C#中的foreach,Java中的for,在Python中的基本使用方法如下:
for item in sequence:
    expressions
  • sequence为可迭代的对象,item为序列中的每个对象。

实例

  • 以下程序输出的结果为 1,2,3,4,5,6,7,12,543,876,12,3,2,5, 内容依次为 example_list 中的每一个元素。
example_list = [1, 2, 3, 4, 5, 6, 7, 12, 543, 876, 12, 3, 2, 5]
for i in example_list:
    print(i)
  • 注意 Python 是使用缩进表示程序的结构,如果程序如下编写,那么每次循环都会输出 inner of for,在循环结束后,输出 outer of for 一次。
example_list = [1, 2, 3, 4, 5, 6, 7, 12, 543, 876, 12, 3, 2, 5]
for i in example_list:
    print(i)
    print("inner of for")
print("outer of for')

进阶

  • range使用:在 Python 内置了工厂函数,range 函数将会返回一个序列,总共有三种使用方法

    • range(start, stop)

      • 其中start 将会是序列的起始值,stop为结束值,但是不包括该值,类似数学中的表达 [start, stop),左边为闭区间,右边为开区间。
      for i in range(1, 10):
          print(i)  # 上述表达将会返回1-9所有整数,但不包括10
    • range(stop)

      • 如果省略了 start 那么将从 0 开始,相当于 range(0, stop)。
    • range(start, stop, step)

      • step 代表的为步长,即相隔的两个值的差值。从 start 开始,依次增加 step 的值,直至等于或者大于 stop。
      for i in range(0, 13, 5):
          print(i)  # 将会输出0,5,10

高级主题

  • 内置集合

    • Python共内置了list、 tuple 、dict和set四种基本集合,每个集合对象都能够迭代。
    • tuple 类型
    tup = ('python', 2.7, 64)
    for i in tup:
        print(i)  # 程序将以此按行输出‘python’, 2.7, 64
    • dictionary 类型

      • 字典在迭代的过程 中将 key 作为可迭代的对象返回。
      • 注意字典中 key 是乱序的,也就是说和插入的顺序是不一致的。
      • 如果想要使用顺序一致的字典,请使用collections 模块中的 OrderedDict 对象。
      • 下列程序输出的结果为:platform 64,lan python, version 2.7。
      dic = 0
      dic['lan'] = 'python'
      dic['version'] = 2.7
      dict['platform'] = 64
      for key in dic:
          print(key, dic[key])
    • set 类型

      • set 集合将会去除重复项。
      • 输出的 结果也不是按照输入的顺序。
      • 下列程序将会输出 python, python3, python2。
      s = set(['python', 'python2', 'python3', 'python'])   
      for item in s:
          print(item)
  • 迭代器

    • Python 中的 for 句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在 for 语句中使用。
    • 只要类中实现了 iter 和 next 函数,那么对象就可以在 for 语句中使用。
    • 现在创建 Fibonacci 迭代器对象,以下程序将会输出前 5 个 Fibonacci 数据 1,1,2,3,5。
    
    # define a Fib class
    
    class Fib(object):
        def_init_(self, max):
            self.max = max
            self.n, self.a, self.b = 0, 0, 1
    
        def_iter_(self):
            return self
    
        def_next_(self):
            if self.n < self.max:
                r = self.b
                self.a, self.b = self.b, self.a + self.b
                self.n = self.n + 1
                return r
            raise StopIteration()
    
    
    # using Fib object
    
    for i in Fib(5):
        print(i)
  • 生成器

    • 除了使用迭代器以外,Python 使用 yield 关键字也能实现类似迭代的效果。
    • yield 语句每次执行时,立即返回结果给上层调用者,而当前的状态仍然保留,以便迭代器下一次循环调用。这样做的好处是在于节约硬件资源,在需要的时候才会执行,并且每次只执行一次。
    • 以下程序将会输出前 5 个 Fibonacci 数据 1,1,2, 3,5。
    def fib(max):
        a, b = 0, 1
        while max:
            r = b
            a, b = b, a + b
            max -= 1
            yield r
    
    
    # using generator
    
    for i in fib(5):
        print(i)

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/81515916
今日推荐