应用场景

我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作,当然这里还会用到上一课讲的分支结构来判断机器人是否持球以及是否进入射门范围。再举一个简单的例子,如果要实现每隔1秒中在屏幕上打印一次“hello, world”并持续打印一个小时,我们肯定不能够直接把print('hello, world')这句代码写3600遍,这里同样需要循环结构。

循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

for-in循环

如果明确的知道循环执行的次数,我们推荐使用for-in循环,例如计算1到100的和。 被for-in循环控制的语句块也是通过缩进的方式来确定的,这一点跟分支结构完全相同,大家看看下面的代码就明白了。

"""
用for循环实现1~100求和Version: 0.1
Author: 骆昊
"""
total = 0
for x in range(1, 101):total += x
print(total)

需要说明的是上面代码中的range(1, 101)可以用来构造一个从1到100的范围,当我们把这样一个范围放到for-in循环中,就可以通过前面的循环变量x依次取出从1到100的整数。当然,range的用法非常灵活,下面给出了一个例子:

  • range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
  • range(1, 101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
  • range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
  • range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。

知道了这一点,我们可以用下面的代码来实现1~100之间的偶数求和。

"""
用for循环实现1~100之间的偶数求和Version: 0.1
Author: 骆昊
"""
total = 0
for x in range(2, 101, 2):total += x
print(total)

while循环

如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。

下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

"""
猜数字游戏Version: 0.1
Author: 骆昊
"""
import random# 产生一个1-100范围的随机数
answer = random.randint(1, 100)
counter = 0
while True:counter += 1number = int(input('请输入: '))if number < answer:print('大一点')elif number > answer:print('小一点')else:print('恭喜你猜对了!')break
# 当退出while循环的时候显示用户一共猜了多少次
print(f'你总共猜了{counter}次')

break和continue

上面的代码中使用while True构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这也就是常说的“死循环”。为了在用户猜中数字时能够退出循环结构,我们使用了break关键字,它的作用是提前结束循环。需要注意的是,break只能终止它所在的那个循环,这一点在使用嵌套循环结构时需要引起注意,下面的例子我们会讲到什么是嵌套的循环结构。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。

嵌套的循环结构

和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个乘法口诀表(九九表)。

"""
打印乘法口诀表Version: 0.1
Author: 骆昊
"""
for i in range(1, 10):for j in range(1, i + 1):print(f'{i}*{j}={i * j}', end='t')print()

很显然,在上面的代码中,外层循环用来控制一共会产生9行的输出,而内层循环用来控制每一行会输出多少列。内层循环中的输出就是九九表一行中的所有列,所以在内层循环完成时,有一个print()来实现换行输出的效果。

循环的例子

例子1:输入一个正整数判断它是不是素数。

提示:素数指的是只能被1和自身整除的大于1的整数。

"""
输入一个正整数判断它是不是素数Version: 0.1
Author: 骆昊
"""
num = int(input('请输入一个正整数: '))
end = int(num ** 0.5)
is_prime = True
for x in range(2, end + 1):if num % x == 0:is_prime = Falsebreak
if is_prime and num != 1:print(f'{num}是素数')
else:print(f'{num}不是素数')

例子2:输入两个正整数,计算它们的最大公约数和最小公倍数。

提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。

"""
输入两个正整数计算它们的最大公约数和最小公倍数Version: 0.1
Author: 骆昊
"""x = int(input('x = '))
y = int(input('y = '))
if x > y:x, y = y, x    # Python中可以用这样的方式来交换两个变量的值
for factor in range(x, 0, -1):if x % factor == 0 and y % factor == 0:print(f'{x}和{y}的最大公约数是{factor}')print(f'{x}和{y}的最小公倍数是{x * y // factor}')break

简单的总结

学会了Python中的分支结构和循环结构,我们就可以解决很多实际的问题了。通过这节课的学习,大家应该已经知道了可以用forwhile关键字来构造循环结构。如果知道循环的次数,我们通常使用for循环;如果循环次数不能确定,可以用while循环。在循环中还可以使用break来提前结束循环

温馨提示:大家如果觉得这个专栏还不错,一定记得点赞收藏哟!如果学习中遇到困难,可以发私信给我进行交流,也可以看看我们为大家录制的入门视频,链接: https://pan.baidu.com/s/19D7XTEcP0pLepxMW9sNv7A密码: n9wr。

for循环中取出最大最小 累加_从零开始学Python - 第006课:循环结构相关推荐

  1. 学python处理数据结构_从零开始学Python - 第009课:常用数据结构之字符串

    第二次世界大战促使了现代电子计算机的诞生,世界上的第一台通用电子计算机叫ENIAC(电子数值积分计算机),诞生于美国的宾夕法尼亚大学,占地167平米,重量27吨,每秒钟大约能够完成约5000次浮点运算 ...

  2. python从零开始进阶_从零开始学Python - 第020课:函数使用进阶

    在之前的课程中,我们讲到过关于函数的知识,我们还讲到过Python中常用的数据类型,这些类型的变量都可以作为函数的参数或返回值:通过前几节课的学习,我们又知道了写在类中的函数通常称之为方法,它代表了类 ...

  3. java 正则首位8或者9的8位数字_从零开始学Python - 第025课:正则表达式的应用

    正则表达式相关知识 在编写处理字符串的程时,经常会遇到在一段文本中查找符合某些规则的字符串的需求,正则表达式就是用于描述这些规则的工具,换句话说,我们可以使用正则表达式来定义字符串的匹配模式,即如何检 ...

  4. python集合运算_从零开始学Python - 第014课:常用数据结构之集合

    在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set).说到集合这个词大家一定不会陌生,在数学课本上就有这个概念.通常我们对集合的定义是"把一定范围的.确定的.可 ...

  5. 引发了未经处理的异常:读取访问权限冲突_从零开始学Python:23课-文件读写和异常处理

    一下子想起来,我的Python100天教程没更新了,赶紧补上~ 这期就还接着前面的讲哈.另外就是想跟伙伴们了解下,就是跟我要到Python视频教程的伙伴,你们学的怎么样了,可以给我个反馈哈! 实际开发 ...

  6. python 窗口程序开发课程_从零开始学Python - 第019课:使用PyCharm开发Python应用程序...

    坚持学习完前18课的小伙伴应该已经感受到了,随着我们对Python语言的认知在逐步加深,我们写的代码也越来越复杂了."工欲善其事,必先利其器",如果希望能够更快更好的写出代码,选择 ...

  7. python渲染html页面_从零开始学Python - 第031课:用Python解析HTML页面

    ,放在标签下的内容会显示在浏览器窗口中,这部分内容是网页的主体:放在标签下的内容不会显示在浏览器窗口中,但是却包含了页面重要的元信息,通常称之为网页的头部.HTML页面大致的代码结构如下所示.

  8. python实现素数筛选法_从零开始学Python系列-第6讲:循环结构

    应用场景 我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景.例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令.在这个场景 ...

  9. 跟我从零开始学python之一_从零开始学 Python 之运算符

    从零开始学 Python 之运算符 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

最新文章

  1. SEO站内优化细节不可少,教你4个小技巧!
  2. python怎么读取列表-Python如何获取列表(List)的中位数
  3. python 爬虫热搜_Python网络爬虫之爬取微博热搜
  4. 莱斯大学找到了多被提升3G/4G网络性能的方法
  5. phpcmsV9 如何开启“会员注册” - 教程篇
  6. 快速修剪技巧_20个相见恨晚的CAD画图神技巧,让你效率飞升!
  7. bootstrap学习笔记(1)基础段落,表格的实现
  8. Java 处理空指针异常(java.lang.NullPointerException)空比较
  9. 8.XSD 复合元素
  10. DDS核心规范-DDS v1.4、DDSI-RTPS、IDL
  11. SQL2008触发器
  12. 国家信息安全等级保护三级认证(三级等保设置以及注意点)
  13. jpg转换成mobi电子书
  14. CFA2019notes的PDF版本,热乎乎的百度网盘分享
  15. 计算机教室建设方案ppt,屏蔽机房建设方案.ppt
  16. 产品文档 | PRD写作手册
  17. 基于python可视化的拉勾网招聘岗位分析
  18. opencv26:霍夫直线变换
  19. 解决win10下PPT打不开,显示内容有问题,提示修复但修复不成功
  20. Everything研究之读取NTFS下的USN日志文件(1)

热门文章

  1. Swift5之网易云音乐页面搭建
  2. 晋级赛关键一场遇到服务器中途维护,第四届全球争霸赛-大区赛常见问题说明...
  3. qq模板图片asqq_重要更新 电脑编辑规则、快速滚动、富文本图片、规则模板等十多项更新!...
  4. jquery中如何实现一个li里面一排6张图片进行切换
  5. 读入一段文本到 vector 对象,每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为大写字母。输出 vector 对象中转化后的元素,每八个单词为一行输出。
  6. linux下screen版本,在Linux (RHEL/CentOS 7/8 )中,如何使用4个简单步骤安装Screen命令
  7. java银行叫号模拟系统_Java 模拟银行叫号机
  8. 【初窥javascript奥秘之闭包】叶大侠病都好了,求不踩了:)
  9. javaScript ie8 不支持 new Date(2017-07);只支持new Date(2017/07/01)
  10. webpack+vue+vueRouter模块化构建完整项目实例详细步骤-入门篇