第八关:for和while循环 - 0入门到进阶(附练习题) | Python基础语法

下面小编就整理了在编程中,比较常用的【for和while循环】0入门到进阶的用法。

Python基础语法 - 专栏链接

手把手教你如何入门,如何进阶。

目录

1.  for循环

2.  range() 函数

3.  while循环

4.  死循环

5.  break语句

6.  continue语句

7.  pass语句

8.  else语句

练习题

联系我们,一起学Python吧


每个人的生活和工作都充满了循环,很多时候,循环意味着重复和枯燥。

生活中循环的例子:比如太阳每天从东边升起西边落下是一种循环,比如交通信号灯不断地从红灯变成绿灯再变成黄灯是一种循环,再比如你日复一日的起床、工作、吃饭、睡觉也可以当成是一种循环。。。

工作中循环的例子:比如你要手动输入500个员工的个人信息,比如你要找出两个文件内100张照片重复的图片,再比如你要找出excel两张表中根据某些关键词匹配把其他信息整合到一起。。。

重复的劳动会不断消磨我们的精力,产生厌倦情绪,有时甚至会导致我们出错。

这些工作中遇到的重复性、工作量大的事情,基本都要用到编程中【循环】。(生活中重复事情,枯燥乏味,就需要各位同学充实自己的生活,发展自己的兴趣爱好,比如学Python编程,打开新世界大门的钥匙,哈哈哈)

1.  for循环

for...in...循环语句:上图是一个基本的常见for循环语句。

这里的变量名i 是因为 i 是常用名,英文名 item,就像数学中常用 xy 作为未知数一样,其实随便取什么变量名都可以。

序列 是指那些和列表有相似特性的类型。它们都存着一组数据,可以通过索引访问里面的元素,可以使用 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

发布了16 篇原创文章 · 获赞 95 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34409973/article/details/104695282