博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习四:条件控制、循环语句、迭代器和生成器
阅读量:6086 次
发布时间:2019-06-20

本文共 3180 字,大约阅读时间需要 10 分钟。

条件控制、循环语句、迭代器和生成器

a,b=a,a+b 的计算方式为先计算右边表达式,然后同时赋值给左边,等价于:

n=bm=a+ba=nb=m复制代码

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下:

#!/usr/bin/python3 # Fibonacci series: 斐波纳契数列# 两个元素的总和确定了下一个数a, b = 0, 1while b < 1000:    print(b, end=',')    a, b = b, a+b复制代码

输出结果如下:

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,复制代码

if语句

 Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else

  1. 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  2. 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  3. 在Python中没有switch – case语句。

range()函数

内置range()函数,用于遍历数字序列,用法如下:

>>>for i in range(5):...     print(i)...01234复制代码
>>>for i in range(5,9) :    print(i)     5678>>>复制代码

也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'),默认步长是1:

>>>for i in range(0, 10, 3) :    print(i)     0369>>>复制代码

负数:

>>>for i in range(-10, -100, -30) :    print(i)     -10-40-70>>>复制代码

结合range()和len()函数以遍历一个序列的索引,如下所示:

>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']>>> for i in range(len(a)):...     print(i, a[i])... 0 Google1 Baidu2 Runoob3 Taobao4 QQ>>>复制代码

使用range()函数来创建一个列表:

>>>list(range(5))[0, 1, 2, 3, 4]复制代码

在 while(或for) … else 在条件语句为 false 时执行 else 的语句块:

#!/usr/bin/python3 count = 0while count < 5:   print (count, " 小于 5")   count = count + 1else:   print (count, " 大于或等于 5")复制代码

输出结果:

0  小于 51  小于 52  小于 53  小于 54  小于 55  大于或等于 5复制代码

pass语句

pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句,如下实例:

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

最小的类

>>>class MyEmptyClass:...     pass复制代码

以下实例在字母为 o 时 执行 pass 语句块:

#!/usr/bin/python3 for letter in 'Runoob':    if letter == 'o':      pass      print ('执行 pass 块')   print ('当前字母 :', letter) print ("Good bye!")复制代码

输出结果:

当前字母 : R当前字母 : u当前字母 : n执行 pass 块当前字母 : o执行 pass 块当前字母 : o当前字母 : bGood bye!复制代码

### 迭代器 iter()和next()

>>>list=[1,2,3,4]>>> it = iter(list)    # 创建迭代器对象>>> print (next(it))   # 输出迭代器的下一个元素1>>> print (next(it))2>>>复制代码

使用for循环遍历

#!/usr/bin/python3 list=[1,2,3,4]it = iter(list)    # 创建迭代器对象for x in it:    print (x, end=" ")复制代码

输出结果:

1 2 3 4复制代码

迭代器学习:

#! /usr/bin/python3import sysclass MyNumbers:  def __iter__(self):    # self.a = 1    return self #   def __next__(self):#     if self.a > 20:#         print("跳出迭代")#         raise StopIteration#     else:#         x = self.a#         self.a += 1#         return x    def __next__(self):    try:        self.a+=1        if self.a > 20:            print("跳出迭代")            raise StopIteration        else:            return self.a    except StopIteration:        print("捕获异常")        sys.exit()   def __init__(self):    self.a=1    print(self.a)myclass = MyNumbers()myiter = iter(myclass)for i in myiter:    print(i)复制代码

生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。 调用一个生成器函数,返回的是一个迭代器对象。

#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函数 - 斐波那契    a, b, counter = 0, 1, 0    while True:        if (counter > n):             return        yield a        a, b = b, a + b        counter += 1f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 while True:    try:        print (next(f), end=" ")    except StopIteration:        sys.exit()复制代码

关于生成器的详细解释,参考链接:

转载于:https://juejin.im/post/5d02fc52f265da1b897acbcf

你可能感兴趣的文章
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>