第二章 第3节 躲不过的重复

第5课知识总结

上一课,我们学习了两种新的数据类型: 列表与字典。

这节课,小K带大家来学习一下【循环】,什么是循环? 就是把一件事情一遍又一遍重复做多遍。

每个人的工作和生活中都充满了循环,比如你要在操场上跑步5圈锻炼身体,比如销售要一遍又一遍给别人介绍产品,比如高三考生高考前每天三点一线的生活。

循环,就意味着重复与无趣。尤其是工作中的重复,无聊重复的工作让我们感觉到疲惫。既然疲惫,我们就把这重复无聊的工作交给计算机,反正它又不怕累,交给它去做。

这就是人工智能能够解放人类劳动生产力的地方。 比如你需要下载100集电视剧,你不需要一集一集的下载,只需要告诉计算机全部下载,计算机就一遍又一遍的循环下载,并且最后还能把这些电视剧按照一定的规则排序。你会发现,计算机全部下载,比你一集一集的下载要快的多,这就是计算机的优势。

再比如商场里的销售员,每位客户到来,她都需要介绍一遍产品,如果今天来50位客户,她就需要介绍50遍产品。而计算机机器人,就可以通过【循环】,一遍又一遍不厌其烦的向客户介绍产品,计算机又不怕累。

为什么计算机就特别擅长做重复性工作呢? 并且是”擅长、速度快、不怕累”。

究其原理, 就是因为代码中的【循环语句】,让计算机能够重复、自动地执行命令。

Python江湖里,提供了两种循环语句, for…in循环语句与while循环语句。

下面, 我们先来看一下第一种循环语句for…in循环语句, 简称for循环。

for循环

还记得在上节课中, 我们对变形金刚点名吗? 回顾一下点名代码。

我们为了点名, 一口气敲了20行print()函数, 我不知道大家, 反正小K是敲累了。

为了解决这个事情, 小K通过for循环解决了上面的问题。

transformers = ['猛大帅' , '铁甲龙','六面兽', '大力金刚', '救护车','红色警戒', '大无畏', '飞天虎','闪电','冲云霄', '计算王','求雨鬼', '守护神','混天豹', '擎天柱', '威震天','惊破天', '红蜘蛛', '巨无霸福特', '雷霆解救队' ]
for i in transformers:
    print(i+'睡了没?')

是不是变简单了? 把20行的代码改成了2行代码。 这就是for循环魅力,一个最简单的for循环。

先来看一下for循环的基本格式:

for i in [1,2,3,4,5,6]:
    print(str(i)+'取钱')

终端上依次出现了列表中的数字+取钱,对吧?这就如同去取款机取钱。

for i in [1,2,3,4,5,6]:
    print(str(i)+'取钱')
#有一群人在排队取钱 , 也就是列表[1,2,3,4,5,6]
#它们中的每一个被叫号的时候(for i in),就开始轮流进去取钱。
#每一个人进去,都会把号码给计算机,然后说“取钱” , 也就是print(i+“取钱”)
#最后计算机为每一个人都提供了服务。

for循环有三个要点:1、叫号 2、一群等着取钱的人 3、办事流程

叫号

既然叫号,就得有个变量,需要存放这个号。

在这里我们存放号这个变量叫做i,为什么用i呢? 在for循环里, 这个变量的专有名称叫【元素】,英文item,i是它的简称。其实,你可以给这个号码取任意名字。

for i in [1,2,3,4,5,6]:
    print(str(i)+'取钱')
for num in [1,2,3,4,5,6]:
    print(str(num)+'取钱')
for abc in [1,2,3,4,5,6]:
    print(str(abc)+'取钱')

你看,是不是都能打印出来?这就对了,存号用什么变量名都可以。

好了,如果这人都办完了业务, 这个ATM机里存的号是谁的?

for i in [1,2,3,4,5,6]:
    print(str(i)+'取钱')
print(i)

原来,办完业务之后, ATM机里保存着是最后一个办业务人的号码。

搞清楚这个叫号了,下面我们看一下这群排队等着取钱的人。

一群排队等着取钱的人

我们刚刚看到“一群排队等着取钱的人”,都是以列表形式:[1,2,3,4,5,6]出现。 那么还有哪些数据类型可以成为“排队取钱的人”?

小K感觉你已经猜到了, 就是字典。

city  = {'北京':'天安门','上海':'东方明珠','广州':'珠江'}

for i in city:
    print(i)

我们用print(i)把ATM中的内容打印出来,发现i会逐渐接收字典中的每一个【键】。

name = '黄晓明'
for i in name:
    print(i)

江湖秘籍: 字符串、列表、字典都可以是“一群排队取钱的人”。

for in name:这个循环的过程,在python江湖中称为【遍历】。

其实,遍历这个词在古代汉语中已经出现过了

只是古人遍历的是山川;而Python遍历的是字符串、列表、字典。

字典的键值对的遍历

除了字符串、列表、字典三种数据类型,我们还可以结合其他数据遍历。

range()函数

for循环经常和range()函数一起搭配使用。

for i in range(5):
    print(i)

运行后, 你会看到整数0,1,2,3,4已经打印出来了。 使用range(n)函数,就可以生成一个从0到n-1的整数序列。

for i in range(11,15):
    print(i)

使用range(x,y) 函数,你可以生成从x到y-1的整数序列。

江湖秘籍:有了range()函数之后,当想把一段代码重复执行n遍时, 就可以直接使用for i in range(n)来解决问题。

for i in range(7):
	print("每天想你第",i,"遍")
for i in range(0,100,11):
    print(i)

你get到什么没有? 这里range(0,100,11) 的意思:从0到99(n-1)依次取数, 数与数之间的间隔为11。

for循环办事流程

我们最后来看一下for循环的第三个要点:办事流程。

for循环的办事流程,就是for循环中执行的语句。

for i in [1,2,3]:
    print(i*3)

在这里print(i*3)就是办事流程, 都是print(i*3)。在当从i=1的情况下开始执行print(i*3),一直执行到i=3把所有人的业务都办完。

办事流程的专名叫【for的循环体】:格式是【冒号】后另起一行,【缩进】写命令。

格式对于编程来说,是件特别需要注意的事情。不要大意失荆州哦。再强调一下for循环的格式

好了,到这里就掌握了for循环的用法。

city = {'北京':'天安门','上海':'东方明珠','广州':'珠江'}
for i in city:
	print(city[i])

到这里for循环就讲完了, 一起回顾一下。

好了,我们学习了for循环, 下面来学习一下另外一种循环:while循环。

While循环

先和while循环混个脸熟,看一下while循环的颜值

x = 0 
while x < 6:
    x = x+1
    print(x)

是不是1,2,3,4,5,6依次打印出现?

它和for循环不同,它不叫号,也不是把一群排队等着取钱的人的业务做完。它是在“一定条件下“,”按流程办事”。

显然,while循环只需要两个步骤:1、设定条件 2、办事流程

while循环:设定条件

while循环在英文中表示“当”, while后面跟条件,当满足条件时,才会执行while内部的循环体。 所以,while循环类似于高速上的收费站:只要你满足条件,那你就可以一遍又一遍循环“按流程办事”。

就在上面例子中,只要满足条件x<6, 就会不停的执行x=x+1,print(x+1)打印出来,直到不满足条件后,就停止办事流程。

江湖秘籍:冒号还是英文输入法下的冒号哦。

刚才黄晓明家的Angelababy去取钱,需要输密码,只要密码输入错误,ATM就会一直让她输密码,如果密码输入正确,就会显示银行卡余额。银行卡的密码是520666。

pwd = ''  # 注:这个''代表空字符串
while pwd != '520666':
    pwd = input('请输入银行卡密码:')
print('卡内还有999999999999元~')

感受到while循环的逻辑没有,是不是很简单。

这里 pwd!=520666就是while循环设定的条件, 只要满足这个条件,就会一直执行while循环里面的循环体pwd = input(‘请输入银行卡密码:’)。

好了,接下来我们看看while循环的第二个要点:办事流程。

while循环:办事流程

while循环,在满足设定条件后,会一遍又一遍的循环执行办事流程。

a=0
while a<4:
    a = a+1
print(a)
a = 0
while a < 4:
    a = a + 1
    print("while循环内")
    print(a)
print("while循环外")
print(a)

好了,到这里,while循环的知识学完了。

for循环与while循环对比

for循环和while循环最大的区别就是在于【循环的工作量是否确定】,for循环就像ATM依次取钱一样,直到把所有人的钱都取完才下班。但是while循环就像收费站一样,只要【满足条件】就干活,不满足条件不干活。

课后练习

1.循环打印1到10之间到数字,排除数字4。

2. 需要循环输入跑男团队每个人的身高,只要找到一个身高高于170的就去搬水;如果找不到,就一直循环。


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注