Python循环顾名思义就是重复执行某一操作,Python中循环包括while循环和for循环,while循环是通过条件判断来指定循环的范围,for循环采用遍历的形式指定循环范围。
并且Python还提供了break
、continue
、pass
关键字来控制循环流程
1、while循环语句
while循环很简单,当循环判断条件为真的,重复执行循环体代码,如果不满足循环判断条件,就跳出循环
代码语言:javascript复制while 循环判断条件:
循环体代码
这块同样的:我们需要注意两个地方,冒号必须要有, 需要执行的循环体代码必须缩进,否则就会报错
小栗子1:重复打印5次字符串"你好"
思路:这里我们先分析,打印5次,需要循环执行5次代码,所以判断条件得满足5次,第6次不满足跳出循环,我们使用加法来解决,初始值=0,然后判断条件为小于5,循环体中会 1,满足值会有0,1,2,3,4;当等于5的时候不满足小于5,就会跳出循环,开始写代码
代码语言:javascript复制n = 0
while n < 5:
print("你好")
n = 1
小栗子2:已知密码password=123456,用户输入密码,密码如果不一致,继续请求用户输入密码,密码一致后退出,打印 "密码正确!"
思路:使用while循环判断输入的密码是否与已知密码一致,不一致执行循环体,一致退出循环体
代码语言:javascript复制password = "123456"
inpnt_password = input("请输入密码:")
while inpnt_password != password:
inpnt_password = input("请输入密码:")
print("密码正确!")
还有个while-else语句,跳出循环的时候执行else后边的代码逻辑
2、for循环语句
for循环是迭代循环,可以用于遍历序列或可迭代对象,比如我们之前学的字符串,列表,元祖,字典
for循环可以遍历对象的所有成员,每个成员都执行一次循环体,所遍历的次数取决于序列的长度或可迭代对象中的元素个数。for循环由for与in搭配组成
代码语言:javascript复制for变量 in可迭代对象(序列):
循环体
大概意思是in从可迭代对象取值,然后赋值给临时变量,然后执行一次循环体
遍历字符串
代码语言:javascript复制for i in 'python':
print(i)
遍历列表
代码语言:javascript复制for i in ['apple', 'banana', 'cherry']:
print(i)
遍历元祖
代码语言:javascript复制for i in ('1', '2', '4'):
print(i)
遍历字典
这里要说一下,字典是键值对的形式,所以我们可以单独遍历键,值,和键值对
遍历字典的键:
代码语言:javascript复制my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
print(key)
遍历字典的值:
代码语言:javascript复制my_dict = {'a': 1, 'b': 2, 'c': 3}
for value in my_dict.values():
print(value)
遍历字典的键值对:
代码语言:javascript复制my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
print(key, value)
这里其实用到了字典的keys()方法
,values()
方法,items()
方法
3、for循环中的次数
在上边我们知道,for循环的次数取决于所遍历的序列的长度或可迭代对象中的元素个数,而我们如果要确定for循环的次数,可以使用内置函数 len()
来获取序列的长度。
比如这个:
代码语言:javascript复制my_list = [1, 2, 3, 4, 5]
print("要循环的次数:", len(my_list))
for i in my_list:
print(i)
这里我们知道了他会循环5次
4、for循环中的range函数
我们遍历数字序列的时候,会使用到python的内置函数range函数,并且他也会可以帮助我们指定循环次数
遵循左开右闭
代码语言:javascript复制range(start, stop, step)
start
(可选):起始值,默认为0。生成的序列包含起始值。stop
:终止值。生成的序列不包含终止值。step
(可选):步长值,默认为1。每个相邻整数之间的间隔
range函数返回的是一个对象,不是具体的值,
如果我们想要取出值,可以与for循环结合使用:
代码语言:javascript复制for i in range(10): # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 从0开始有头无尾
for i in range(1,10,1) # 1 2 3 4 5 6 7 8 9 设定开始,结束,步长
for i in range(1,10,2) # 1 3 5 7 9 取10以内的奇数
range函数还可以快速生成列表
代码语言:javascript复制my_list = list(range(5))
print(my_list) # range(5)生成一个从0到4的整数序列,list()函数将该序列转换为列表
5、while循环嵌套使用
在实际的使用过程中,我们还可以使用while循环嵌套使用,指的是一个while循环体外部再有一个循环体
比如我们每天早中晚说三次"你好",这个很简单
代码语言:javascript复制count = 0
while count < 3:
print("你好")
count = 1
现在我们有了新要求,每天说3次你好,连续说5天,这就需要我们再来一个循环5次
代码语言:javascript复制count = 0
day = 0
while day < 5:
while count < 3:
print("你好")
count = 1
day = 1
print("-------------------")
发现打印出来,不是我们想要的,会打印3次你好,然后打印了5次分界线,这是什么问题,首先代码从上往下走,
day=0<5,所以执行下边的循环,count=0<3,输出你好,对应的count 1,直到count=3不在小于3,跳出循环,day=1,执行1次分界线,然后依次执行5次,所以我们发现内部循环就执行了1次
我们应该怎么做呢?可以将内循环初始参数放在外循环里 d = 0 while d < 5: count = 0 while count < 3: print("你好") count = 1 d = 1 print("-------------------")
6、for循环语句嵌套
同样的,for循环嵌套也是一个for循环外部嵌套着一个for循环
同样我们完成上边的例子:每天早中晚说三次"你好"
代码语言:javascript复制for i in range(3):
print("你好")
然后连续说5天
代码语言:javascript复制for j in range(5):
for i in range(3):
print("你好")
print("--------------")
使用for循环解决上边的问题,代码简洁很简单
tips:在我们使用循环嵌套的时候,不要上来写外部的循环,我们先完成内循环,然后在写外循环
7、break、continue、pass关键字
关键字 | 含义 |
---|---|
break | 终止循环。跳出循环体 |
continue | 跳过当前循环迭代,继续执行下一次迭代,当前的循环体不会执行 |
pass | 空语句,程序执行到此语句直接跳过,不会做任何的操作,仅作占位语句 |
我们来做几个小栗子
代码语言:javascript复制小栗子1:遍历数字1-10,当数字=5的时候,终止循环
for i in range(10):
if i == 5:
break
print(i)
print("终止循环")
# 打印结果=5时就直接跳出了,不会输出5,打印结果:0,1,2,3,4
代码语言:javascript复制小栗子2:遍历数字1-10,当数字=5的时候,跳出循环,执行下次循环
for i in range(10):
if i == 5:
continue
print(i)
print("跳出循环")
# 打印结果=5时就直接跳出了本次循环,不会输出5,然后接着下次循环,打印结果:0,1,2,3,4,6,7,8,9
代码语言:javascript复制小栗子3:遍历数字1-10,当数字=5的时候,先不做任何操作,之后在做处理
for i in range(10):
if i == 5:
# 待做操作
pass
print(i)
# pass只做空操作,什么也不做,起到占位符的作用
day11练习
初级:
1.while循环打印0-10,for循环打印0-10
2.while循环打印10-0,for循环打印10-0
3.for循环1-100,只打印奇数
4.for循环1-100,只打印偶数
中级:
1.打印出 1 到 10 的所有整数,但跳过数字 7
2.计算1-100的整数累加和
3.计算1-100的所有偶数和所有奇数的和
4.有字符串"hello,world",找出该字符串中出现次数最多的字符,并打印出该字符和出现的次数
高级
1.打印输出99乘法表
2.使用嵌套循环打印输出正方形
* * * * * * * * * * * * * * * *
3.使用嵌套循环打印输出三角形
* * * * * * * * * * * * * * *