下面小编就整理了在编程中,比较常用的【for和while循环】0入门到进阶的用法。
Python基础语法 - 专栏链接
手把手教你如何入门,如何进阶。
目录
每个人的生活和工作都充满了循环,很多时候,循环意味着重复和枯燥。
生活中循环的例子:比如太阳每天从东边升起西边落下是一种循环,比如交通信号灯不断地从红灯变成绿灯再变成黄灯是一种循环,再比如你日复一日的起床、工作、吃饭、睡觉也可以当成是一种循环。。。
工作中循环的例子:比如你要手动输入500个员工的个人信息,比如你要找出两个文件内100张照片重复的图片,再比如你要找出excel两张表中根据某些关键词匹配把其他信息整合到一起。。。
重复的劳动会不断消磨我们的精力,产生厌倦情绪,有时甚至会导致我们出错。
这些工作中遇到的重复性、工作量大的事情,基本都要用到编程中【循环】。(生活中重复事情,枯燥乏味,就需要各位同学充实自己的生活,发展自己的兴趣爱好,比如学Python编程,打开新世界大门的钥匙,哈哈哈)
1. for循环
for...in...循环语句:上图是一个基本的常见for循环语句。
这里的变量名为 i 是因为 i 是常用名,英文名 item,就像数学中常用 x 、y 作为未知数一样,其实随便取什么变量名都可以。
序列 是指那些和列表有相似特性的类型。它们都存着一组数据,可以通过索引访问里面的元素,可以使用 for 循环遍历等。字符串、列表、元组等都属于 序列。
循环体内的代码可以只进行简单的运算,也可以复杂地进行各种判断、数据处理等,具体逻辑完全根据我们的需求定制。
字符串、列表、元组等都属于 序列。我们来看几个例子对比一下:
# 列表是序列
for i in ['派', '森', '编', '程']:
print(i)
# 逐行输出:派 森 编 程
# 元组也是序列
for i in ('派', '森', '编', '程'):
print(i)
# 逐行输出:派 森 编 程
# 字符串是一串字符的序列,也属于序列
for i in '派森编程':
print(i)
# 逐行输出:派 森 编 程
# 整数不是序列
for i in 123:
print(i)
# 报错:TypeError: 'int' object is not iterable
2. range() 函数
range() 函数常常与 for 循环一起搭配使用。
range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
rule_1 = range(10)
print([i for i in rule_1]) # 从 0 开始到 10,结合列表推导式
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
rule_2 = range(1, 11) # 从 1 开始到 11
print([i for i in rule_2])
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
rule_3 = range(0, 30, 5) # 步长为 5
print([i for i in rule_3])
# [0, 5, 10, 15, 20, 25]
rule_4 = range(0, 10, 3) # 步长为 3
print([i for i in rule_4])
# [0, 3, 6, 9]
rule_5 = range(0, -10, -1) # 负数
print([i for i in rule_5])
# [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
rule_6 = range(0)
print([i for i in rule_6])
# []
rule_7 = range(1, 0)
print([i for i in rule_7])
# []
3. while循环
while 循环 的语义是当满足某条件时,就一直重复执行某段代码,我们来看一下图解:
while 循环由 循环条件 和 循环体 两部分组成。
循环条件是个布尔值,每次循环都会进行判断,当满足循环条件(值为 True)时执行循环体内的代码,否则结束循环。
循环体内则是那些需要重复执行的代码,比如重复打印一句话,重复处理一堆文件,重复填写一系列信息等等。
上图代码的意思是:当 i 小于 5 时,重复“打印 i 的值并将 i 的值加 1”这个操作。
i = 0
while i < 5: # 当i每次加1,到i等于5,不满足条件,则停止循环
print(i)
i = i + 1 # 等同于 i += 1 每次循环加1
# 0
# 1
# 2
# 3
# 4
4. 死循环
循环条件 是用来控制是否要结束循环的。所以,如果我们没有控制好 循环条件,很可能会引发 死循环!
在编程中,一个靠自身控制无法终止的程序称为 死循环。比如:
while True:
print('learn')
上面的代码因为 循环条件 一直是 True,所以会永无止境地在屏幕上打印 learn。( 无休止的学习,只会累垮身体,注意休息喔 )
当然我们写 while 循环条件时,也不会直接写 True 的。有些情况是我们粗心的写错了,比如:
i = 0
while i < 5:
print(i)
# 此处我们不小心漏掉了 i = i + 1
上面的例子中因为漏掉了 i = i + 1,导致 i 的值一直为 0,一直满足 i < 3 的循环条件。这就导致了我们的程序进入了 死循环!
死循环 其实是一件很可怕的事情,它使我们的程序不受控制,永无止境地做着无意义的循环。这会造成后续代码无法执行,甚至会导致 CPU 占用过高电脑死机等情况。
死循环解决方法:当我们执行代码后,出现死循环,在当前代码的命令行 ( cmd,开发工具终端等等 )处 ctrl + c 就搞定了,停止程序。
5. break语句
break 语句用于 结束循环,常和条件判断一起使用,在特定条件下结束循环。
# for 循环
for i in range(5):
i = i + 1
if i == 3:
break # 注意此处有缩进
print(i)
print('循环结束了')
# 逐行输出:1 2 循环结束了
# while 循环
i = 0
while i < 5:
i = i + 1
if i == 3:
break # 注意此处有缩进
print(i)
print('循环结束了')
# 逐行输出:1 2 循环结束了
break 语句在 while 循环 里和 for 循环 里的作用一样,都是用于提前结束循环,后续循环代码不再执行。
有了 break 语句,在死循环中,也可以终止循环了。
i = 0
while True:
if i == 3: # 每次循环 i都加1,循环到i等于3的时候,进入break语句,结束循环
break
print(i)
i = i + 1
print('循环结束了')
# 逐行输出:0 1 2 循环结束了
6. continue语句
continue 语句和 break 语句有着类似的作用,它用于 跳过当前循环,常和条件判断一起使用,在特定情况下跳过当前循环体中的剩余语句,继续进行下一轮循环。
# for 循环
for i in range(5):
i = i + 1
if i == 3:
continue # 注意此处有缩进,跳出当前循环,循环继续,不会打印3
print(i)
print('循环结束了')
# 逐行输出:1 2 4 5 循环结束了
# while 循环
i = 0
while i < 5:
i = i + 1
if i == 3:
continue # 注意此处有缩进,跳出当前循环,循环继续,不会打印3
print(i)
print('循环结束了')
# 逐行输出:1 2 4 5 循环结束了
我们可以看到,continue 语句在 while 循环 里和 for 循环 里的作用一样,当执行到 continue 语句时,continue 语句之后的代码都被跳过了,直接进入了下一轮的循环。
continue 语句和 break 语句都用于循环, break 语句用于结束循环,continue 语句用于跳过当前循环。所以 continue 语句不能跳出 “死循环”。
7. pass语句
意思就是跳过
number = int(input('请输入一个整数:'))
if number > 10:
pass
else:
print('你输入了一个小于等于10的数字')
这个代码的意思是:当 a > 10 的时候,跳过,什么都不做。其他情况,也就是 a <= 10 的时候,执行一个print语句。
8. else语句
for i in range(3):
number = int(input('请输入0来结束循环,你有3次机会'))
if number == 0:
print('触发break语句,循环结束了,导致else语句不生效。')
break
else:
print('3次循环你都错过了,else语句生效了。')
当循环中没有碰到 break语句,就会执行循环后面的 else语句,否则就不会执行。在while循环中,else的用法也是如此。
练习题
同学们,先自觉练习,答案在公众号,公众号回复暗号【答案】即可。
1. 下列代码打印结果为?
numbers = [1,2,3,4,5]
for number in numbers:
if number % 2 == 0:
break
print(number)
A. 1
B. 1
3
5
C. 2
D. 3
4
5
2. 下列代码打印结果为?
numbers = [1,2,3,4,5]
for number in numbers:
if number % 2 == 0:
continue
print(number)
A. 1
B. 1
3
5
C. 2
D. 3
4
5
3. 下列代码打印结果为?
string = ['这是Python基础语法第 %s 关' % i for i in range(1,10) if i == 8]
print(string)
A. '这是Python基础语法第 8 关'
B. '这是Python基础语法第 10 关'
C. ['这是Python基础语法第 10 关']
D. ['这是Python基础语法第 8 关']
4. 下列关于 死循环 说法正确的是?
A. 死循环是我们有意为之的循环,不必担心
B. 死循环是指循环“死了”,不再执行循环
C. 死循环能提高程序运行效率
D. 死循环是指靠自身控制无法终止的程序
5. 做一个简易的彩票中奖号码程序。
要求:随机生成5个数字,追加到列表,打印最终5个数字的列表号码。
提示:需要导入random模块中的randint(a,b),随机取数字a到b之间的数字,包括a,b。(from random import randint)
联系我们,一起学Python吧
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。
微信群(关注「Python家庭」一起轻松学Python吧)
QQ 群(983031854)