day11- 循环语句

2024-03-12 11:36:02 浏览数 (2)

Python循环顾名思义就是重复执行某一操作,Python中循环包括while循环和for循环,while循环是通过条件判断来指定循环的范围,for循环采用遍历的形式指定循环范围。

并且Python还提供了breakcontinuepass关键字来控制循环流程

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

空语句,程序执行到此语句直接跳过,不会做任何的操作,仅作占位语句

我们来做几个小栗子

小栗子1:遍历数字1-10,当数字=5的时候,终止循环

代码语言:javascript复制
for i in range(10):
    if i == 5:
        break
    print(i)
print("终止循环")

# 打印结果=5时就直接跳出了,不会输出5,打印结果:0,1,2,3,4

小栗子2:遍历数字1-10,当数字=5的时候,跳出循环,执行下次循环

代码语言:javascript复制
for i in range(10):
    if i == 5:
        continue
    print(i)
print("跳出循环")

# 打印结果=5时就直接跳出了本次循环,不会输出5,然后接着下次循环,打印结果:0,1,2,3,4,6,7,8,9

小栗子3:遍历数字1-10,当数字=5的时候,先不做任何操作,之后在做处理

代码语言:javascript复制
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.使用嵌套循环打印输出三角形

* * * * * * * * * * * * * * *

0 人点赞