循环语句

循环语句就是在符合条件的情况下,重复执行一个代码段。

20.1 while 循环

(1)while 循环

while 循环和 if 条件分支语句类似,即在条件表达式为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块(循环体)。但是要注意:只要位于 while 循环体中的代码,其必须使用相同的缩进格式(通常缩进 4 个空格),否则 Python 解释器会报 SyntaxError 错误。while 循环的语法格式为:

while 条件表达式:
    代码块(循环体)

while 语句执行的具体流程为:首先判断条件表达式的值,其值为 True 时,则执行代码块(循环体)中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块(循环体)...如此循环,直到条件表达式的值为 False,才终止循环。

while 循环

# 打印数字 0-10
a = 0
while 0 <= a <= 10:
    print(a, end="\t")
    a += 1

# 计算 1-100 的和
sum_i = 0
i = 0
while 0 <= i <= 100:
    sum_i += i
    i += 1
print(end="\n")
print(sum_i)

执行以上代码,输出结果为:

0	1	2	3	4	5	6	7	8	9	10	
5050

(2)while...else... 循环

如果 while 后面的条件表达式判定为 False 时,则执行 else 的代码块,语法格式如下:

while 条件表达式:
    代码块(循环体)
else:
    代码块

比如上面 while 循环计算 0-100 的和,还可以这样写:

# 计算 1-100 的和
sum_i = 0
i = 0
while 0 <= i <= 100:
    sum_i += i
    i += 1
else:
    print(end="\n")
    print(sum_i)

执行以上代码,输出结果为:

5050

20.2 range 函数

range 函数是 Python 中的内置函数,用于生成一系列连续的整数,一般用于 for 循环体中,range 函数的一般语法格式为:range(start, stop, step)

参数名称 说明 备注
start 计数起始位置 整数参数,可省略;省略时默认从0开始计数;计数迭代的序列中包含 start
stop 计数终点位置 不可省略的整数参数;计数迭代的序列中不包含 stop
step 步长 可省略的整数参数,省略时默认时步长为1,不可以为 0

注意:① 它表示的是左闭右开区间(顾头不顾尾);② 它接收的参数必须是整数,可以是负数,但不能是浮点数等其它类型;

for x in range(3):               # 省略了start 和 step
    print(x)
for x in range(1, 3):
    print(x)
for x in range(-3, -1):
    print(x)
for x in range(-1, -5, -2):
    print(x)
for x in range(1, 8, 2):
    print(x)
for x in range(1, 8, 2):
    print(x, end="")

执行以上代码,输出结果为:

0
1
2
1
2
-3
-2
-1
-3
1
3
5
7
1357

20.3 for 循环

(1)for 循环

for 循环是 Python 中的一种循环语句,提供了 Python 中最强大的循环结构,它可以循环遍历多种序列项目,之所以要有 for 循环,是因为 for 循环的循环取值(遍历取值)比 while 循环更简洁,for 循环的一般语法格式为:

for 迭代变量 in 序列:
    代码块(循环体)

其中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值;序列可以是字符串、列表、元组、字典和集合;代码块指的是具有相同缩进格式的多行代码(和 while 循环一样),由于和循环结构联用,因此代码块又称为循环体。

for 循环

# 打印数字 0-10
a = range(0, 11)
for i in a:
    print(i, end="\t")
# 计算 1-100 的和
b = range(0, 101)
sum_j = 0
for j in b:
    sum_j += j
    j += 1
print(end="\n")
print(sum_j)
# 遍历字符串
a = "whu"
for i in a:
    print(i, end="\t")
# 遍历列表
print(end="\n")
a = ["w", "h", "u"]
for i in a:
    print(i, end="\t")
# 遍历元组
print(end="\n")
a = ("w", "h", "u")
for i in a:
    print(i, end="\t")
# 遍历字典
print(end="\n")
a = {1: "w", 2: "h", 3: "u"}
for i in a:
    print(a[i], end="\t")
# 遍历集合
print(end="\n")
a = {"w", "h", "u"}
for i in a:
    print(i, end="\t")

执行以上代码,输出结果为:

0	1	2	3	4	5	6	7	8	9	10	
5050
w	h	u	
w	h	u	
w	h	u	
w	h	u	
u	h	w	

(2)for...else... 循环

for...else... 语句用于在循环结束后执行一段代码,语法格式为:

for 迭代变量 in 序列:
    代码块(循环体)
else:
    代码块

当序列中的循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码块。比如上面 for 循环计算 0-100 的和,还可以这样写:

# 计算 1-100 的和
b = range(0, 101)
sum_j = 0
for j in b:
    sum_j += j
    j += 1
else:
    print(sum_j)

执行以上代码,输出结果为:

5050

20.4 break 语句

在执行 while 循环或者 for 循环时,只要循环条件满足,程序将会一直执行循环体。但在某些场景,我们可能希望在循环结束前就强制结束循环,Python 提供了两种强制离开当前循环体的办法:① break 语句:可以完全终止当前循环;② continue 语句:可以跳过执行本次循环体中剩余的代码,转而执行下一次的循环。

break 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要执行 break 语句,就会直接结束当前正在执行的循环体。

a = range(0, 11)
for i in a:
    if i == 5:
        break
    print(i, end="\t")

执行以上代码,输出结果为:

0	1	2	3	4	

① 使用 break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行。但是,如果将 else 代码块中的代码直接放在循环体的后面,则该部分代码将会被执行。

a = range(0, 101)
# 使用 break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行
sum_i = 0
for i in a:
    if i == 5:
        break
    sum_i += i
    i += 1
else:
    print(sum_i)
# 使用 break 跳出当前循环体之后,如果将 else 代码块中的代码直接放在循环体的后面,则该部分代码将会被执行
sum_j = 0
for j in a:
    if j == 5:
        break
    sum_j += j
    j += 1
print(sum_j)

执行以上代码,输出结果为:

10

② 对于嵌套的循环结构来说,break 语句只会终止所在循环体的执行,而不会作用于所有的循环体

a = "我来自武汉大学,你呢?"
for i in range(3):
    for j in a:
        if j == ',':
            break
        print(j, end="")
    print("\n重复打印")

执行以上代码,输出结果为:

我来自武汉大学
重复打印
我来自武汉大学
重复打印
我来自武汉大学
重复打印

20.5 continue 语句

continue 语句会终止执行本次循环中剩下的代码,直接从下一次循环继续执行,continue 语句的用法和 break 语句一样,只要 while 或 for 循环中的相应位置加入即可。

add = "我来自武汉大学,你呢?"
for i in add:
    if i == ',':
        print(end="\n")
        continue
    print(i, end="")

执行以上代码,输出结果为:

我来自武汉大学
你呢?

20.6 pass 语句

Python 中的 pass 是空语句,pass 不做任何事情,表示一个占位符,一般用作占位语句,能够保证程序的代码结构正确,使用 pass 语句比使用注释更加优雅。

age = int( input("请输入你的年龄:") )
if age < 12 :
    print("婴幼儿")
elif 12 <= age < 18:
    print("青少年")
elif 18 <= age < 30:
    print("成年人")
elif 30 <= age < 50:
    pass
else:
    print("老年人")

执行以上代码,输出结果为:

请输入你的年龄:49

20.7 while 循环和 for 循环的比较

(1)while 循环

① while 循环称之为“条件循环”,循环次数取决于条件何时变为假

② while 循环适合循环次数是未知的操作。

(2)for 循环

① for 循环称之为"取值循环",循环次数取决 in 后包含的值的个数

② for 循环适合循环次数是已知的操作。

作业:计算 1~100 之间偶数的累积和(包含1和100)。

# 方法一
i = 0
sum_i = 0
while i <= 100:
    sum_i += i
    i += 2
print(sum_i)
# 方法二
j = 0
sum_j = 0
while j <= 100:
    if j % 2 == 0:
        sum_j += j
    j += 1
print(sum_j)

执行以上代码,输出结果为:

2550
2550

作业:使用 for 循环和 while 循环,打印九九乘法表,标准如下:

输出标准

for a in range(1, 10):
    b = 1
    while a >= b:
        print("%d*%d=%d" % (a, b, a * b), end="\t")
        b += 1
    print(end="\n")

执行以上代码,输出结果为:

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	

作业:① products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]],需打印出以下格式:

------ 商品列表 ------
0 iphone   6888
1 MacPro   14800
2 小米6    2499
3 Coffee   31
4 Book     60
5 Nike     699

② 根据上面的 products 列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终退出时,打印购买的商品列表并计算出总金额。

#  第一问
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
print("-" * 5, "商品名称", "-" * 5)
i = 0
for product in products:
    print(i, end="\t")
    i += 1
    for index in product:
        print(index, end="\t")
    print(end="\n")
#  第二问
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
bag = []
money = []
i = 1
while i < 7:
    que1 = int(input("请输入想要购买的商品编号(参考以上列表):"))
    bag.append(products[que1])
    i = i + 1
    que2 = input("是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):")
    if que2 == "C":
        continue
    else:
        print("您购买的商品列表如下:")
        for i in range(0, len(bag)):
            print(i, bag[i][0], bag[i][1], end="\n")
            money.append(bag[i][1])
            sum_m = sum(money)
        print("总计 %d 元,欢迎下次光临!" % sum_m)
        break

执行以上代码,输出结果为:

----- 商品名称 -----
0	iphone	6888	
1	MacPro	14800	
2	小米6	2499	
3	Coffee	31	
4	Book	60	
5	Nike	699	
请输入想要购买的商品编号(参考以上列表):0
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):C
请输入想要购买的商品编号(参考以上列表):1
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):C
请输入想要购买的商品编号(参考以上列表):2
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):C
请输入想要购买的商品编号(参考以上列表):3
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):C
请输入想要购买的商品编号(参考以上列表):4
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):C
请输入想要购买的商品编号(参考以上列表):5
是否继续选购(如果继续,请输入“C”;如果退出,请输入任意字符):F
您购买的商品列表如下:
0 iphone 6888
1 MacPro 14800
2 小米6 2499
3 Coffee 31
4 Book 60
5 Nike 699
总计 24977 元,欢迎下次光临!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐