大爽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。

    即迭代时,每次增长1
  • range(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: 循环体。
  1. 如果conditionTrue,则执行下方缩进的代码块statement

    否则,跳出while循环。
  2. (conditionTrue时)执行完代码块statement之后,

    回到循环开头while condition处,重复步骤一。

使用示例

n = 5
while n > 0:
n -= 1
print(n)

其输出为

4
3
2
1
0

breakcontinue

  • 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不输出(跳过输出)。

最新文章

  1. C# 的 Dictionary 寫入前應注意事項
  2. BI cube的前世今生:商业智能BI为什么需要cube技术
  3. SSH服务器与Android通信(3)--Android客户端发送数据
  4. Android SQLite的ORM接口实现(一)---findAll和find的实现
  5. 30Springd的包扫描——&lt;context:component-scan base-package=” ”/&gt;
  6. Hibernate HQL注入攻击入门
  7. Java__jar包的简单操作
  8. Jquery.validate表单验证
  9. suse linux11 包括所有的linux操作系统的 遗忘root密码解决方案
  10. vue-cli脚手架npm相关文件解读(6)build.js
  11. AdaBoost对实际数据分类的Julia实现
  12. word2vec初探(用python简单实现)
  13. CAN双机通讯调试小结(SJA1000与MCP2515通讯)
  14. json_encode转义中文问题
  15. await
  16. jquery的call()和apply()方法
  17. vue 组件开发 props 验证
  18. 【LG4491】[HAOI2018]染色
  19. 【BZOJ1491】【NOI2007】社交网络(最短路,动态规划)
  20. 华中农业大学校赛--c The Same Color

热门文章

  1. 《集体智慧编程学习笔记》——Chapter2:提供推荐
  2. kubelet源码分析——监控Pod变更
  3. 踩坑系列《十三》解决时间戳long转换int溢出(即转换值为负数)
  4. Miller-Rabin and Pollard-Rho
  5. Flask 易错点
  6. 【UE4 C++ 基础知识】&lt;3&gt; 基本数据类型、字符串处理及转换
  7. Linux搭建SVN服务器详细教程
  8. 技术博客--微信小程序canvas实现图片编辑
  9. 关于下载pyton第三方库的细节
  10. 关于string转换为wstring问题