python 循环语句(含练习题)

当需要重复做一件事或者多件事时,且不知道要重复多少次,这时候就需要使用到循环

python中循环有两种,while循环和for循环,下面会详细介绍这种循环的用法、以及使用场景

while 语句

根据一定条件,重复的执行一条语句或多条语句。while常使用于不确定循环次数或者定时执行的情况

# 常见表达式
# wxgzh: PyGo学习笔记

while 真值表达式:
	执行语块1
else:
	执行语块2

说明:

​ 1、先执行真值表达式, 测试布尔值是否为True
2、如果真值表达式的值为True,则执行语块1,然后再返回到第1步,重复进行测试
3、 如果真值表达式的值为False,则执行else子句中的语句块2,然后结束此while语句,如果没有else子句,则直接结束此while语句的执行
4、else 子句部分可以省略

示例一

使用循环处理用户输入的名字,直到用户输入 "quit"退出输入功能,并且打印之前输入的所有名字

# 用户输入多少个名字未知,也不知道用户什么时候结束,这个时候就可以用while循环解决这个问题
# wxgzh: PyGo学习笔记

# 方式一, 使用while ... else ... 的方式
input_name = input("请输入名字:")
all_name_record = ""
while input_name != "quit":
    all_name_record += input_name + "  "
    input_name = input("请输入名字:")
else:
    print(all_name_record)

# 方式二,使用whil配合break 的方式
all_name_record = ""
while True:
    input_name = input("请输入名字:")
    if input_name == "quit":
        break
    all_name_record += input_name + "  "
print(all_name_record)

上面这两个都简单粗暴的示例了while 的使用,但使用while循环需要格外注意条件控制,避免死循环导致cpu爆满导致死机
1、用真值表达式退出循环 ,例如每执行一次都更新真值表达式的判断条件,如下面例子

# wxgzh: PyGo学习笔记
i = 0
while i < 10:
    print(i)
    i += 1

这样子当打印执行了十次后, i < 10 这个条件就会不符合,从而退出了循环
2、达到特定条件后退出循环

# wxgzh: PyGo学习笔记
i = 0
while True:
    if i >= 10:
        break
    print(i)
    i += 1

日常使用都需要判断循环是否会进入死循环,如果是业务需求,则需要判断死循环是否会导致进程崩溃、死机。
如果循环内部是 cpu 密集型,就会导致代码一直在循行,cpu 爆满、进程崩溃的现象,比如下面的例子

# wxgzh: PyGo学习笔记
i = 0
while True:
    if i >= 10:
        break
    print(i)
# 这个代码片段忘记更新i变量,使得i一直等于0, i >= 10的条件永远达不到,就会出现一直打印0无法退出,导致代码cpu爆满

但是也不是所有的死循环都会导致进程崩溃,如示例一的方式二,如果用户一直不输入"quit",其实也是会进入死循环的,但是input是交互型函数,代码执行到这里会等待用户输入内容,如果用户不输入,代码就会一直在这里等着,不会接着往下走,就不会出现cpu爆满导致进程崩溃的现象
3、死循环的else子句永远不会执行

练习
打印1~20的整数,每行打印5个,打印四行

如:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15



(提示: if语句可以嵌入while语句中使用)

答案

# wxgzh: PyGo学习笔记
i = 1
while i <= 20:
    if i % 5 == 0:
        print(i)
    else:
        print(i, end=" ")
    i += 1

while 语句嵌套

while 语句本身也是语句,和其它语句一样,可以嵌入if语句和while语句

# wxgzh: PyGo学习笔记
while 真值表达式:
    外部执行语句1
    
    while 真值表达式2:
        内部执行语句
    else:
        内部循环结束执行语句
    
    外部执行语句2
else:
    外部循环结束执行语句

练习

输入一个整数n,打印指定宽度的正方形
如: 输入5打印如下:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
输入4打印如下:
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4

答案

# wxgzh: PyGo学习笔记
n = int(input("请输入一个整数:"))
i = 0
while i < n:
    j = 1
    while j <= n:
        print(j, end=" ")
        j += 1
    print()
    i += 1

break 语句

如果在循环过程中我不想再继续此循环语句的执行了,但真值表达式又为真,怎么办?
此时就可以使用break来终止当前循环语句的执行
说明说明:
1、 当break语句执行后,此循环语句break之后的语句将不再执行
2、 break 语句通常和if语句组合使用
3、 break 语句终止循环时,循环语句的else子句的语句不会被执行
4、 break 语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
5、 break 语句只能用在循环语句(while或for)内部使用

for 循环

用来遍历可迭代对象的数据元素(可迭代对象是指能依次获取数据元素的对象)
常见可迭代对象包括: 字符串(str)、列表(list)、元组(tuple)、字典(dict)、集合(set)、range函数返回的对象等

# wxgzh: PyGo学习笔记
# 语法
for 变量 in 可迭代对象:
    语句块1
else:
    语句块2
    
# for 循环的else语句也是可以省略的
for 变量 in 可迭代对象:
    语句块1

示例

# wxgzh: PyGo学习笔记
# 用for 语句打印 1 ~ 20, 打印在一行内
for i in range(1, 21):
    print(i, end=" ")
# 执行结果: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

# 用for 语句打印 1 ~ 20, 每5个打印在一行内
for i in range(1, 21):
    if i % 5 != 0:
        print(i, end=" ")
    else:
        print(i)
# 执行结果
# 1 2 3 4 5
# 6 7 8 9 10
# 11 12 13 14 15
# 16 17 18 19 20

练习

计算 1 + 3 + 5 + 7 + … +97 + 99的和, 分别用for 和 while 两种循环实现
答案

# wxgzh: PyGo学习笔记
# for 循环 实现
total = 0
for i in range(1, 100, 2):
    total += i
print("1 + 3 + 5 + 7 + .... +97 + 99 =", total)
# 执行结果:1 + 3 + 5 + 7 + .... +97 + 99 = 2500

# while 循环实现
total = 0
i = 1
while i <= 99:
    total += i
    i += 2
print("1 + 3 + 5 + 7 + .... +97 + 99=", total)
# 执行结果:1 + 3 + 5 + 7 + .... +97 + 99 = 2500

for语句嵌套

for 语句本身也是语句,和其它语句一样,可以嵌入if语句和for语句

# wxgzh: PyGo学习笔记
for 变量 in 可迭代对象1:
    语句块1
	
    for 变量 in 可迭代对象2:
        语句2

示例

# wxgzh: PyGo学习笔记
for x in "ABC":
    for y in '123':
        print(x + y)
# 执行结果:
# A1
# A2
# A3
# B1
# B2
# B3
# C1
# C2
# C3

练习
用for循环、while 循环打印乘法口诀表

# wxgzh: PyGo学习笔记
# 口诀表的样式
# 1 X 1 = 1
# 1 X 2 = 2       2 X 2 = 4
# 1 X 3 = 3       2 X 3 = 6       3 X 3 = 9
# 1 X 4 = 4       2 X 4 = 8       3 X 4 = 12      4 X 4 = 16
# 1 X 5 = 5       2 X 5 = 10      3 X 5 = 15      4 X 5 = 20      5 X 5 = 25
# 1 X 6 = 6       2 X 6 = 12      3 X 6 = 18      4 X 6 = 24      5 X 6 = 30      6 X 6 = 36
# 1 X 7 = 7       2 X 7 = 14      3 X 7 = 21      4 X 7 = 28      5 X 7 = 35      6 X 7 = 42      7 X 7 = 49
# 1 X 8 = 8       2 X 8 = 16      3 X 8 = 24      4 X 8 = 32      5 X 8 = 40      6 X 8 = 48      7 X 8 = 56      8 X 8 = 64
# 1 X 9 = 9       2 X 9 = 18      3 X 9 = 27      4 X 9 = 36      5 X 9 = 45      6 X 9 = 54      7 X 9 = 63      8 X 9 = 72   9 X 9 = 81

# 用for 循环实现
for i in range(1, 10):
    for j in range(1, i + 1):
        print(j, "X", i, "=", i * j, end="\t")
    print()
    
# 用while 循环实现
i = 1
while i < 10:
    for j in range(1, i+1):
        print(j, "X", i, "=", i * j, end="\t")
    print()
    i += 1

continue 语句

用于循环语句(while,for语句)中,不再执行本次循环 continue之后的语句,重新开始一次新的循环
说明:
1、在for 语句中执行continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次开始执行
2、在while语句中执行continue,将会直接跳转到 while语句的真值表达式处重新判断循环条件

示例

# wxgzh: PyGo学习笔记
# 打印 1 ~ 20的单数, 打印在一行内

# for 循环
for i in range(1, 20):
    if i % 2 == 0:
        continue
    print(i, end="  ")
# 执行结果: 1  3  5  7  9  11  13  15  17  19

# while 循环
i = 1
while i < 20:
    if i % 2 == 0:
        i += 1
        continue
    print(i, end="  ")
    i += 1
# 执行结果: 1  3  5  7  9  11  13  15  17  19

练习

# wxgzh: PyGo学习笔记
# 阅读下面代码,思考x、i 最终值等于多少
x = 10
for x in range(1, 9):
    print(x, end="  ")

i = 1
for i in range(4, 0):
    print(i, end="  ")

print('x=', x, ",  i=", i)

# 答案 x=8、i=1
# for 循环执行过程中,会对变量赋值
# range(1, 9)取到8的时候是最后一个元素,赋值完给x,执行完语句会退出循环
# range(4, 0)是空的可迭代对象,取不到值,不会给i赋值,也不会执行循环语句


# 阅读下面代码,思考打印结果是什么:
i = 6
for x in range(1, i):
    i -= 1
print('x =', x, 'i=', i)
# 答案 x = 5 i= 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅风扫秋叶尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值