大爽Python入门教程 3-3 循环:`for`、`while`
大爽Python入门公开课教案
点击查看教程总目录
for循环
可迭代对象iterable
不同于其他语言。
python的for循环只能用于遍历 可迭代对象iterable 的项。
即只支持以下语法:
for item in iterable:
...
其中
iterable是可迭代对象item是可迭代对象中的项。...是(要换成)循环时要执行的代码。
可迭代对象的定义和具体原理解释起来比较复杂(其实我也不是很会Orz)。
这里只需要了解基础的。
哪些是(基础的)可迭代对象。
回顾一下,我们现阶段所学习的对象,
哪些是是可迭代的。
- 序列
sequence,包括字符串str,元组tuple,列表list - 字典
dict,迭代出的项是键key range(n)。
这里再进一步的介绍下range这个函数
range
首先回顾下for i in range(n)的效果,
i从0,1,2遍历到n-1。
示例如下
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
实际上,该方法会产生一个可迭代对象。
不过可以用list方法将其产生的可迭代对象
转换成列表。
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
有时可以使用这个办法快速生成列表。
接下来,我们详细的介绍下range这个函数。
为了便于理解,大家可以认为range函数有三种写法:
range(end): 从0,1,2迭代到n-1。range(start, end): 从start, start+1, start+2 迭代到n-1。
即迭代时,每次增长1range(start, end, step): 从start, start+step, start+2*step迭代到n-1。
即迭代时,每次增长step。(step本身有步长的意思,或者说一步的距离)
实际上,第三种写法range(start, end, step)是完整形态。
第二种写法是step为1的特殊形态。(step默认值为1)
第一种写法是start为0、step为1的特殊形态。(start默认值为0)
到这里,大家应该能理解:
我们上面调用range(5)的时候,
实际上得到range(0, 5)的原因了。
代码示例
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
while循环
for循环的特点是,直接遍历可迭代对象。
而while循环的特点是,按条件循环。
其语法如下。
while condition:
statement
condition,循环条件statement: 循环体。
- 如果
condition为True,则执行下方缩进的代码块statement。
否则,跳出while循环。 - (
condition为True时)执行完代码块statement之后,
回到循环开头while condition处,重复步骤一。
使用示例
n = 5
while n > 0:
n -= 1
print(n)
其输出为
4
3
2
1
0
break和continue
break: 直接退出(跳出)循环continue: 跳过本轮循环,进入下一轮循环。
break示例
lst = [10, 5, 2, 9, 3, -1, 6, 7]
for item in lst:
if item < 0:
break
print(item)
其输出为
10
5
2
9
3
解释:
遍历列表中的每一项item
当item小于0时,break中断了整个循环。
后面的项就无法被遍历。
continue示例
lst = [10, 5, 2, 9, 3, -1, 6, 7]
for item in lst:
if item < 0:
continue
print(item)
其输出为
10
5
2
9
3
6
7
解释:
遍历列表中的每一项item
当item小于0时,跳过本轮循环,本轮后面的代码(即print(item))不再执行,
进入下一轮循环, 直接遍历列表的下一个item。
其效果为遇到小于0的item不输出(跳过输出)。
大爽Python入门教程 3-3 循环:`for`、`while`的更多相关文章
- 大爽Python入门教程 1-3 简单的循环与判断
大爽Python入门公开课教案 点击查看教程总目录 这里只初步认识下循环和判断,以便于我们去实现一些简单的计算. 循环和判断的详细知识和细节,我们将在后面的章节(大概是第三章)展开阐述. 1 初步了解 ...
- 大爽Python入门教程 3-4 实践例题
大爽Python入门公开课教案 点击查看教程总目录 1. 求和 使用循环,计算列表所有项的和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11 ...
- 大爽Python入门教程 3-5 习题
大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...
- 大爽Python入门教程 3-6 答案
大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...
- 大爽Python入门教程 2-5 *拓展实践,对比与思考
大爽Python入门公开课教案 点击查看教程总目录 本文偏难. 推荐等第一二三四章上完后,回过来拓展阅读. 基础情景思考 假设有这样一张成绩表 最左边的一列是名字,起名麻烦. 这里直接用ABC...来 ...
- 大爽Python入门教程 2-3 字符串,列表,字典
大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...
- 大爽Python入门教程 2-1 认识容器
大爽Python入门公开课教案 点击查看教程总目录 1 什么是容器 先思考这样一个场景: 有五个学生,姓名分别为: Alan, Bruce, Carlos, David, Emma. 需要给他们都打一 ...
- 大爽Python入门教程 1-4 习题
大爽Python入门公开课教案 点击查看教程总目录 1 [思考]方向变换 小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度), 小明面朝哪里?小明转过了多少圈? (360度为一圈,圈数向 ...
- 大爽Python入门教程 1-5 答案
大爽Python入门公开课教案 点击查看教程总目录 1 方向变换 >>> 51//4 12 >>> 51%4 3 答: 向左转51次之后, 小明面朝东方, 转过了1 ...
随机推荐
- 几分钟就能学会的Python虚拟环境教程
什么是虚拟环境 我们在使用Python的时候,通常用pip来进行包管理.比如我们要安装一个叫requests的库,那么我们就会采用以下命令去安装: pip install requests 那你知道, ...
- 把之前CompletableFuture留下的坑给填上。
你好呀,我是歪歪. 填个坑吧,把之前一直欠着的 CompletableFuture 给写了,因为后台已经收到过好几次催更的留言了. 这玩意我在之前写的这篇文章中提到过:<面试官问我知不知道异步编 ...
- iOS实现XMPP通讯(二)XMPP编程
项目概述 这是一个可以登录jabber账号,获取好友列表,并且能与好友进行聊天的项目. 使用的是第三方库XMPPFramework框架来实现XMPP通讯. 项目地址:XMPP-Project 项目准备 ...
- BIBD&SBIBD的矩阵题
证明不存在 \(01\) 方阵 \(A\) 使得: \(A^TA=\begin{pmatrix}7&2&\dots &2\\2&7&\dots&2\\ ...
- 定制input元素
定制input元素 input元素可以用来生成一个供用户输入数据的简单文本框.其缺点在于用户在其中输入什么值都可以.有时这还不错,但是有时设计者可能希望让用户输入特定类型的数据.在后一种情况下,可以对 ...
- 【错误分析】NX error status: 32
在进行NX 制图里面的表格注释合并单元格时,总是报错NX error status: 32,找了很久都不知道问题所在. 报错提示如下: NXOpen.NXException: NX error sta ...
- RabbitMQ延时队列应用场景
应用场景 我们系统未付款的订单,超过一定时间后,需要系统自动取消订单并释放占有物品 常用的方案 就是利用Spring schedule定时任务,轮询检查数据库 但是会消耗系统内存,增加了数据库的压力. ...
- python查询对像所有方法
鉴于学习时好多参数对像都不知道是什么玩意有什么方法,搜了半天一个 """arg为一个对像,下面是打印所有对像方法"""for i, func ...
- 第31篇-方法调用指令之invokevirtual
invokevirtual字节码指令的模板定义如下: def(Bytecodes::_invokevirtual , ubcp|disp|clvm|____, vtos, vtos, invokevi ...
- 文件上传漏洞Bypass总结
文件上传漏洞Bypass总结 前端JS验证文件类型: 上传后缀jpg,抓包改为php后缀 ======================================================= ...