第十章:大鸽同学在哪里?痴月熊学python

痴月熊学Python

往期文章

第一章:Python-新人报道
第二章:小学生都会的数学计算,痴月熊学Python
第三章:变量-从此你就叫张三了!,痴月熊学python
第四章:神奇的变身器-转义字符(改),痴月熊学python
第五章:稍息!立正!——print格式化输出,痴月熊学python
第六章:小学生不一定会的运算,痴月熊学python
第七章:考了多少分啊孩子,痴月熊学python
第八章:数据结构四兄弟——列表(上),痴月熊学python
第九章:数据结构四兄弟——列表(下),痴月熊学python

前言

hello,今天又和大家见面了。哇阅读量越来越少了,就离谱!上一章的列表也讲完了,那今天这章必须得讲循环了。不过阅读量越来越少了,就离谱!上一章的列表也讲完了,那今天这章必须得讲循环了。不过阅读量越来越少了,就离谱!上一章的列表也讲完了,那今天这章必须得讲循环了。不过阅读量越来越少了,就离谱!上一章的列表也讲完了,那今天这章必须得讲循环了。不过阅读量越来越少了,就离谱!上一章的列表也讲完了,那今天这章必须得讲循环了。不过… …
提示:以下是本篇文章正文内容,下面案例可供参考

一、why 循环

刚刚不小心陷入循环了,还好我给痴月熊的文章三连了,不然差点出不来。循环就是不停的去执行同一个操作,所以所为啥要去循环呢。python的循环语句分为两种:for语句和while语句。for循环和while循环的区别说白了,就是for你让它循环几次就循环几次,while则是一直循环。while语句你写一个让它一直循环,只要条件一直是真的,终有一天你的电脑会嗝屁的。所以为啥要去循环呢,肯定是有些东西一个一个写出来比较麻烦啊。所以说人类为了偷懒还是会进步的。刚好上一章学会了列表,for循环经常用作遍历某个容器,就比如列表。while看要一直循环的环境需求,不过也是会停止的,只要条件为假,或者你手动停了。

二、for循环的基本使用

2.1、语法格式

for i in (可迭代对象)
	循环体

这就是for循环的语句格式了。你可以把这堆东西这么理解:for循环可迭代对象,把每次从可迭代对象里循环出来的值赋给i,然后再执行循环体。

2.2、使用for循环遍历列表

那我们上面提到了for循环可以用来遍历列表,那我们具体如何遍历呢。看下面代码:

list = ["a","b","c","d"]
for i in list:
    print(i)

RUN:
a
b
c
d

代码执行过程:
定义一个列表list
把list的第一个元素赋给 " i "(i = a),然后打印 " i "
再次循环回list,把list第二个元素赋给 " i "(i = b) ,然后打印 " i "
再次循环回list,把list第三个元素赋给 " i " (i = c),然后打印 " i "
再次循环回list,把list第四个元素赋给 " i "(i = d) ,然后打印 " i "
再次循环回list,发现list里面没有更多的元素了,循环结束。

2.3、使用range函数创建列表

range函数的作用是生成一个等差序列。等差序列都知道是啥吧,不知道的这里我提一下。一个序列从第二项起,每一项与它的前一项的差等于同一个常数,这就叫等差序列。range函数的使用方式默认是从0开始,比如你写一个range(5),那它就会从0开始一直到(5-1)。range(5):0,1,2,3,4 ## range(1,5):1,2,3,4 ## range(3,7):3,4,5,6. 现在我们结合for使用下range:

for i in range(6)
	print(i)

RUN:
0
1
2
3
4
5

我还可以把range打印出来的数字放在一个列表里。我们可以先定义一个空列表,然后将循环打印的数值追加到原列表中。

list = []
for i in range(3,7):
    list.append(i)

print(list)

RUN:
[3,4,5,6]

三、for循环的嵌套

3.1、for循环嵌套if语句。

for i in range(0,4):
    if i < 2:
        print(f"元素{i}小于2")
    elif i > 2:
        print(f"元素{i}大于2")
    else:
        print(f"元素{i}")

RUN:
元素0小于2
元素1小于2
元素2
元素3大于2

3.2、for循环使用else语句

没想到吧,for循环竟然还可以使用else。else的作用可以当做整个代码块的最后一次循环,上面不管循环了多少次,只要上面不循环了,就去执行else。这里也很简单,看一下代码就理解了:

for i in range(0,4):
    if i < 2:
        print(f"元素{i}小于2")
    elif i > 2:
        print(f"元素{i}大于2")
    else:
        print(f"元素{i}")
else:
	print("循环结束")
	
RUN:
元素0小于2
元素1小于2
元素2
元素3大于2
循环结束

这里一定要看好嵌套的语法缩进,虽然有两个else,不过第一个只属于小循环,第二个则是循环后。

3.3、for嵌套for

for循环可以嵌套if语句,当然也可以嵌套for语句。这里就使用for套for写一个99乘法表:

for i in range(1,10):
    for j in range(1,10):
        print("%d * %d = %3d "%(i,j,i*j),end=" ")
	    if j == 9 :
        	print("\n")
    
RUN:
1 * 1 =   1  1 * 2 =   2  1 * 3 =   3  1 * 4 =   4  1 * 5 =   5  1 * 6 =   6  1 * 7 =   7  1 * 8 =   8  1 * 9 =   9  

2 * 1 =   2  2 * 2 =   4  2 * 3 =   6  2 * 4 =   8  2 * 5 =  10  2 * 6 =  12  2 * 7 =  14  2 * 8 =  16  2 * 9 =  18  

3 * 1 =   3  3 * 2 =   6  3 * 3 =   9  3 * 4 =  12  3 * 5 =  15  3 * 6 =  18  3 * 7 =  21  3 * 8 =  24  3 * 9 =  27  

4 * 1 =   4  4 * 2 =   8  4 * 3 =  12  4 * 4 =  16  4 * 5 =  20  4 * 6 =  24  4 * 7 =  28  4 * 8 =  32  4 * 9 =  36  

5 * 1 =   5  5 * 2 =  10  5 * 3 =  15  5 * 4 =  20  5 * 5 =  25  5 * 6 =  30  5 * 7 =  35  5 * 8 =  40  5 * 9 =  45  

6 * 1 =   6  6 * 2 =  12  6 * 3 =  18  6 * 4 =  24  6 * 5 =  30  6 * 6 =  36  6 * 7 =  42  6 * 8 =  48  6 * 9 =  54  

7 * 1 =   7  7 * 2 =  14  7 * 3 =  21  7 * 4 =  28  7 * 5 =  35  7 * 6 =  42  7 * 7 =  49  7 * 8 =  56  7 * 9 =  63  

8 * 1 =   8  8 * 2 =  16  8 * 3 =  24  8 * 4 =  32  8 * 5 =  40  8 * 6 =  48  8 * 7 =  56  8 * 8 =  64  8 * 9 =  72  

9 * 1 =   9  9 * 2 =  18  9 * 3 =  27  9 * 4 =  36  9 * 5 =  45  9 * 6 =  54  9 * 7 =  63  9 * 8 =  72  9 * 9 =  81  

i = 1的时候,j =1,打印 1 * 1 = 1 (末尾空格)加上一个空格之后,j的循环会继续打印在同一行。等j循环到9的时候,触发if条件,j = 9,整体换行。然后继续从i = 2开始,j循环1到9,换行。i = 3…

四、while循环

4.1、while的语法格式

while 条件:
	循环体

while的格式就更简单了,你只需要给个条件,然后执行下面的代码就可以了。这里写个可以永久循环的代码。

a = 1
b = 2
while a != b:
	print("a居然不等于b")

RUN:
a居然不等于b
a居然不等于b
a居然不等于b
a居然不等于b
a居然不等于b
....

首先定义了两个变量,a等于1,b等于2。然后写入一个循环条件a不等于b,那1本来也不等于2,所以它永远是真的,哪怕世界毁灭地球爆炸它也是真的。那它就会一直执行,直到电脑嗝屁了。

4.2、while应用于计算

while用来操作数字非常不错,比如求1 到 100 之间的和:

i = 1            
a = 0               
while i <=100:   
    a += i
    i +=1
print(f"1到100的总和为:{a}")

RUN:
1100的总和为:5050

i = 1:设置一个起始值
a = 0:这里我第一次想的时候没有写,但是他会报错找不到a变量,因为a += i 等于a = a + i。a也要一个起始值,a第一次等于i开始就对了。所以第一次写成了:

while i <=100:
    a = i
    a += i
    i +=1
print(f"1到100的总和为:{a}")

嗯,很明显有问题。每次循环都等于i,到最后就变成100 + 100了。所以一定要给a赋一个起始值0。
while i <=100:这里就是确保i的数值不超过100,因为起始值是1所以不会是负数啦。
a += i :a = a + i,相当于把每次i循环的值保留下来,新的i和旧的a相加成为新的a。
i += 1:新i = 旧i + 1这里则是一个自增长,每次循环结束数值都加1。你可以试试不加这个,我相信你会哭的。

4.3、猜数字小游戏

这里可以做一个猜数字的小游戏,大家可以自己去试试几次猜对吧。

import random	#导入random模块
a = random.randint(1,100)	#从1100之间随机生成一个随机数赋值给a
guess = 0					#写一个1-100以外的数字,使循环条件满足
while guess != a:			#0不在1-100之间所以条件满足,可以循环
    guess = int(input("请输入一个 1~100 之间的数字:")) #从新定义guess,使guess等于输入的数值
    if guess > a:			#给用户提示差距
        print("好大!")
    elif guess < a:
        print("真小~")
    else:
        print(f"针补戳,猜对啦。答案是{a} ")

4.4、使用while嵌套打印99乘法表(真)

i = 1
while i <=9:
    j = 1
    while j<=i:
        print("%d * %d = %3d "%(i,j,i*j),end=" ")
        j +=1
    print ('\n')
    i += 1

RUN:
1 * 1 =   1  

2 * 1 =   2  2 * 2 =   4  

3 * 1 =   3  3 * 2 =   6  3 * 3 =   9  

4 * 1 =   4  4 * 2 =   8  4 * 3 =  12  4 * 4 =  16  

5 * 1 =   5  5 * 2 =  10  5 * 3 =  15  5 * 4 =  20  5 * 5 =  25  

6 * 1 =   6  6 * 2 =  12  6 * 3 =  18  6 * 4 =  24  6 * 5 =  30  6 * 6 =  36  

7 * 1 =   7  7 * 2 =  14  7 * 3 =  21  7 * 4 =  28  7 * 5 =  35  7 * 6 =  42  7 * 7 =  49  

8 * 1 =   8  8 * 2 =  16  8 * 3 =  24  8 * 4 =  32  8 * 5 =  40  8 * 6 =  48  8 * 7 =  56  8 * 8 =  64  

9 * 1 =   9  9 * 2 =  18  9 * 3 =  27  9 * 4 =  36  9 * 5 =  45  9 * 6 =  54  9 * 7 =  63  9 * 8 =  72  9 * 9 =  81  

这回是正经的99乘法表了。
i = 1:竖列起始值1
while i <=9:保证i的范围是1-9
j = 1:横行起始值1
while j<=i:横行只循环小于等于i的,保证横列循环的范围不超过竖列数值。
print("%d * %d = %3d “%(i,j,i*j),end=” "):格式化输出
j +=1:横行数值自增长,还是满足不大于竖列数值
print (’\n’) :横行循环完毕换行,保证三角形
i += 1:竖列数值自增长

五、控制循环

5.1、break终止循环

一只循环的话,是有一点苦恼的。我想循环但又不想完全循环,要是在循环过程中能踩刹车就好了,今天它来了,有请我们帅气的break登场。break的作用就是跳出循环体,不需要等到循环条件为Flase的时候才结束。那具体什么场合会用到呢,比如在列表里我们查到自己想要的值得时候就可以停止了,不需要继续往后循环了。下面我写一个场景给大家展示一下break的作用:

print("麋鹿老师:索引位置在2和2之前的同学有哪些?")
list = ["智慧兔","迷彩羊","憨憨熊","大鸽","痴月熊"]
for i in list:
    print(f"{i}: 到!")
    if i == "憨憨熊":
        print("麋鹿老师:索引2和2之前的同学就这些")
RUN:
麋鹿老师:索引位置在22之前的同学有哪些?
智慧兔: 到!
迷彩羊: 到!
憨憨熊: 到!
麋鹿老师:索引22之前的同学就这些
大鸽: 到!
痴月熊: 到!

首先我们先不加break看了下效果,我们的需求是到索引2的时候就可以停了,但是现在已经过了憨憨熊那里,还是有同学在点到。下面再看一下加了braek:

print("麋鹿老师:索引位置在2和2之前的同学有哪些?")
list = ["智慧兔","迷彩羊","憨憨熊","大鸽","痴月熊"]
for i in list:
    print(f"{i}: 到!")
    if i == "憨憨熊":
        print("麋鹿老师:索引2和2之前的同学就这些")
        break

RUN:
麋鹿老师:索引位置在22之前的同学有哪些?
智慧兔: 到!
迷彩羊: 到!
憨憨熊: 到!
麋鹿老师:索引22之前的同学就这些

这回可以看到,一直到憨憨熊之后,就没有继续往下循环了。这样大概就能看清楚break的作用了吧。

5.2、continue

print("麋鹿老师:今天来的同学达个到")
list = ["智慧兔", "迷彩羊", "憨憨熊", "大鸽", "痴月熊"]
for i in list:
    if i == "大鸽":
        continue
    print(f"{i}: 到!")


print("麋鹿老师:今天大鸽同学没来啊")

RUN:
麋鹿老师:今天来的同学达个到
智慧兔: 到!
迷彩羊: 到!
憨憨熊: 到!
痴月熊: 到!
麋鹿老师:今天大鸽同学没来啊

同学们要自己照着敲一遍,可看仔细了这回的if和上面的if可不在一个位置。这下大家应该可以看出来continue的作用了,break是跳出整个循环,continue则是停止当前的循环,本次循环后面的东西就不输出了,之后继续执行后面的循环。

总结

我一而再三的思索,我决定还是写成一章好了。还有上面放那么多往期文章的链接,看起来很杂。于是我单独弄出一个地方专门用来看往期文章的。还有算上这章刚好10章,我就把这些东西归类到s1了。诶嘿嘿针不戳,以后大家想看往期文章直接去传送门。这次我就放在下面,以后我都会放在顶部。找文章看着也比较清晰。拜拜·

传送门

痴月熊学python往期文章传送门

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值