9.【Python编程】循环语句while、for及其与else、break、continue、pass的组合使用
python循环语句的使用
目录
9.【Python编程】循环语句while、for及其与else、break、continue、pass的组合使用
备注: 本教程主要使用Python3.6在jupyter notebook上编程实现。Python环境配置参考《【Python学习】Windows10开始你的Anaconda安装与Python环境管理》或者《【Python学习】纯终端命令开始你的Anaconda安装与Python环境管理》。
9.1 循环的意义与定义
循环语句就是在某种条件下,循环的执行某段代码块,并在符合条件的情况下跳出该段循环,其目的是处理想要进行处理的相同任务,它的关键词主要以:for
、while
来标识。
- while 循环
while循环是在一定的条件下,按照流程执行。因此,while循环有2个要点:1.判断(放行)条件;2.执行流程。其格式如下所示:
# 循环前面的代码
...
while 判断条件(condition):
# 循环里面的代码
执行语句(statements)...
# 循环结束后的后续代码
...
例如,利用while循环实现等差数列{1,2,3,...,100}
求和:
n = 100
sum = 0
i = 1
while i <= n:
sum = sum + i
i += 1 # i=i+1的意思
print("1 到 %d 之和为: %d" % (n,sum))
1 到 100 之和为: 5050
- for 循环
在Python当中,for 循环可以遍历任何可迭代对象,如一个列表、元组、字典、集合、字符串,以及其他一切实现了__inter__
方法的对象。其格式如下所示:
# 循环前面的代码
...
for <变量> in <可迭代对象>:
# 循环里面的代码
<statements>
# 循环结束后的后续代码
...
例如,利用for循环实现等差数列{1,2,3,...,100}
求和:
n = 100
sum = 0
# range(start, stop[, step])返回一个可迭代对象
# 从0开始,步长为step,最后一个元素为stop-1
# 所以下面采用的是range(n+1)
for i in range(n+1):
sum = sum + i
print("1 到 %d 之和为: %d" % (n,sum))
1 到 100 之和为: 5050
9.2 无限循环
无限循环在服务器上客户端的实时请求非常有用。通过设置条件表达式永远为True
来实现无限循环,格式如下:
# 循环前面的代码
...
while True:
# 无限循环里面的代码
执行语句(statements)...
注意: 可以使用 CTRL+C
来退出当前的无限循环。
下面的例子实现永久提供根据年龄查询是否成年的服务:
while True:
age=int(input("请输入你的年龄:"))
if age >= 18:
print("你已经成年了!")
else:
print("你还未成年!")
请输入你的年龄:18
你已经成年了!
请输入你的年龄:21
你已经成年了!
请输入你的年龄:12
你还未成年!
Ctrl+C中断
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-6-0001704c5f59> in <module>
1 while True:
----> 2 age=int(input("请输入你的年龄:"))
3 if age >= 18:
4 print("你已经成年了!")
5 else:
~/anaconda3/envs/py36/lib/python3.6/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt)
861 self._parent_ident,
862 self._parent_header,
--> 863 password=False,
864 )
865
~/anaconda3/envs/py36/lib/python3.6/site-packages/ipykernel/kernelbase.py in _input_request(self, prompt, ident, parent, password)
902 except KeyboardInterrupt:
903 # re-raise KeyboardInterrupt, to truncate traceback
--> 904 raise KeyboardInterrupt("Interrupted by user") from None
905 except Exception as e:
906 self.log.warning("Invalid Message:", exc_info=True)
KeyboardInterrupt: Interrupted by user
9.3 循环语句搭配else
Python的while...else
与for...else
语句,是Python中最不常用,最为误解的语法特性之一。Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说,如果我们不是除正常以外的其他方式退出循环,那么else分支将会被执行。也就是在循环体内没有break语句、没有return语句,或者没有异常出现时,else
分支会被执行
- while…else 语句
# 循环前面的代码
...
while 判断条件(condition):
# 循环里面的代码
执行语句(statements)...
else:
# 循环迭代正常完成时执行一遍下面语句
执行语句(statements)...
# else语句执行结束后的后续代码
...
如果 while 后面的条件语句为 false,而且在循环体内没有break语句、没有return语句,或者没有异常出现时,则执行 else 的语句块。
count = 0
while count < 3:
print(count, " 小于3")
count = count + 1
else:
print(count, " 大于或等于3")
0 小于3
1 小于3
2 小于3
3 大于或等于3
例如,在用户输入正确的时候退出循环,输入次数太多的时候提示用户,可以实现如下代码:
user_passwd = '123456'
count = 0
while count < 3:
passwd = input("请输入密码:")
if passwd==user_passwd:
break
print("密码不正确,请重新输入!")
count = count + 1
else:
print("警告:你已经连续三次错误输入密码了,请5分钟后重新尝试!")
请输入密码:1234
密码不正确,请重新输入!
请输入密码:666
密码不正确,请重新输入!
请输入密码:1212
密码不正确,请重新输入!
警告:你已经连续三次错误输入密码了,请5分钟后重新尝试!
- for…else语句
与while...else
语句类似,
# 循环前面的代码
...
for <变量> in <可迭代对象>:
# 循环里面的代码
<statements>
else:
# 循环迭代正常完成时执行一遍下面语句
执行语句(statements)...
# else语句执行结束后的后续代码
...
例如,判断2~19当中那些是质数,代码如下:
for n in range(2, 20):
for j in range(2, n):
if n % j == 0:
print(n, '等于', j, '*', n//j)
break
else:
# 循环中没有找到元素
print(n, ' 是质数')
2 是质数
3 是质数
4 等于 2 * 2
5 是质数
6 等于 2 * 3
7 是质数
8 等于 2 * 4
9 等于 3 * 3
10 等于 2 * 5
11 是质数
12 等于 2 * 6
13 是质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是质数
18 等于 2 * 9
19 是质数
9.4 break、continue与pass 语句
-
break
语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。如果你使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。 -
continue
语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。 -
pass
语句不做任何事情,一般用做占位语句,是为了保持程序结构的完整性。
问题:找出2到100的前10个素数
# 使用break语句实现
count = 0 # 素数个数统计器
prime_number = []
for n in range(2, 101):
for j in range(2, n):
if n % j == 0:
break # 跳出内部循环
else:
prime_number.append(n)
count += 1
if count == 10:
break # 跳出外部循环
print("2到100的前10个素数为:",prime_number)
2到100的前10个素数为: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
问题:打印列表的所有奇数
# 使用continue语句实现
list1 = [1,3,5,7,8,9,23,45,66,78]
for i in list1:
if i%2 == 0:
# 遇到偶数则跳过后面的打印语句
continue
print(i)
1
3
5
7
9
23
45
# pass语句不做任何事情,一般用做占位语句,是为了保持程序结构的完整性。
for letter in 'Hello world!':
if letter == 'o':
pass
print('执行 pass 块')
print('当前字母 :', letter)
当前字母 : H
当前字母 : e
当前字母 : l
当前字母 : l
执行 pass 块
当前字母 : o
当前字母 :
当前字母 : w
执行 pass 块
当前字母 : o
当前字母 : r
当前字母 : l
当前字母 : d
当前字母 : !

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