Python入门之(3.3)循环结构

目录

循环结构

1.1while循环

1.2for循环

1.3break和continue语句

1.4循环中的else语句

1.5嵌套循环

1.6字符串的遍历循环

1.7pass语句


循环结构

循环结构是结构化程序设计中常用的结构,可以简化程序,或解决顺序结构和选择结构无法解决的问题。循环是指在满足一定条件的情况下,重复执行一组语句的结构。重复执行的语句称作循环体。

1.1 while循环

while循环语法格式如下:

[初始化语句]

while (循环条件):

      语句块

      [迭代语句]

循环结构的执行流程如下所述:执行到while循环的时候,先判断“循环条件”,如果为真,则执行下面缩进的循环体;执行完毕,再次判断“循环条件”。若为真,继续执行循环体;若为假,不再执行循环体,循环结束。循环结束后,继续执行循环结构之后的语句。

注意:

  1. while条件之后的冒号不能丢掉;
  2. 如果循环条件不成立,则循环体一次也不执行;
  3. 如果循环控制变量的改变不是向着循环结束条件的方向变化,或者循环条件是一个结果为真的表达式,则该循环结构是死循环或无限循环,即循环结构在没有特殊语句的控制下,循环会一直进行,无法结束。无限循环经常用于某些特定的场合,如菜单设计中;
  4. 初始化语句和迭代语句可以没有,用于特殊的场合;
  5. 循环体的所有语句必须对齐,且与while的位置具有相同的缩进;
  6. 若while循环结构的循环体只有一条语句,这条语句可以直接跟在while行尾的冒号之后,即写在同一行上。

循环结构的设计其实就是循环次数的确定。对于while循环结构设计,只要掌握了如下“三要素原则”,就可以设计出循环结构。

  1. 初始化语句:循环控制变量赋初值,或循环中用到的其他变量的初始化;
  2. 循环条件:循环结构继续执行的条件,是一个结果为True或False的表达式;
  3. 迭代语句:通常是循环控制变量的改变,且朝着循环结束条件的方向变化,使得循环可以正常结束。

例如,判断一个整数n是否是素数,需要判断2~n-1之间的数与n是否有整除关系。假定i为循环控制变量,则循环的3个要素设计如下:

  1. i=2
  2. i<=n-1
  3. i=i+1

循环的三个要素确定以后,只要把这3个要素放在循环语句中合适的位置,再添加要重复执行的语句(循环体),便构成一个可执行的循环结构。

1.2 for循环

一般情况下,使用while循环结构就可以完成任务,但是有些时候选择for循环结构更加有效。比如,要为一个集合(序列和其他可迭代对象)的每个元素都执行一个相同的代码块,使用for语句更有效。

for语句的基本形式为:

for <变量> in <序列>:

       循环体语句块

其中,序列可以是等差数列、字符串、列表、元组或者是一个文件对象。在执行过程中,变量一次被赋值为序列中的每一个值,然后执行缩进块中的循环语句。序列中的所有元素全部扫描完毕,循环结束。

注意:

  1. 循环体中的每条语句都缩进至相同的缩进级别,表示循环体的开始位置和结束位置;
  2. 与其他语言的for循环不同,循环结构的控制被打包成序列方式,实际上仍然暗含循环结构设计的三要素。其中,序列中第一个元素的赋值相当于循环控制变量赋初值;每次循环结束后,选取列表中的下一个元素,相当于循环控制变量的迭代;只要序列中还有元素就执行循环体,相当于循环继续执行的条件;
  3. 序列可以是后面要讲的数据结构对象,也可以通过range来产生一个连续的数字列表。range不是一个真正的函数,它是一种数据类型,代表不可操作的连续数字;
  4. for语句末尾要加冒号;
  5. 在Python命令行交互方式使用循环语句时,需要在循环结构中的最后一条语句之后按两次Enter键,目的是提示交互式命令程序循环结构已经结束,可以开始执行了。但是在文本编辑器中不需要这个额外的按Enter键的操作;
  6. 序列中的对象也可以由用户罗列,而不是由range函数生成,如[1,2,3,4,5]或者['string1','string2',...'stringn'],每个数据之间用逗号分隔;
  7. 列表中的元素不需要按顺序排列。

range的用法如下:

range([start,]stop[,step])

参数说明:start为可选参数,起始数;stop为终止数;step为可选参数,步长。

 功能:如果range只有一个参数x,则产生一个包含0~x-1的整数序列。例如range(6)将产生序列0、1、2、3、4、5。

 功能:从start开始,产生一系列整数start,start+1,start+2,……,stop-1。该序列的步长为1。要求start和stop是整数,且start<stop。例如,range(0,5)将产生序列0,1,2,3,4。

 功能:从start开始产生整数序列start,start+step,start+step*2,……,start+step*r。其中,最后一个数据小于stop,即满足公式start+step*r<stop。start、stop和step都是整数,并且start<stop。例如,range(3,10,2)将产生序列3,5,7,9。

  1. range(stop)
  2. range(start,stop)
  3. range(start,stop,step)

1.3 break和continue语句

当需要中途从循环结构退出时,在Python中使用break语句。

语法格式:

break

功能:从循环体当前位置退出。在循环结构中执行到该语句时,循环马上退出并终止。通常break语句出在在if语句中,即通过某种条件判断来决定是否退出循环结构。

还有一种情况是跳过循环体中未执行的语句,返回到循环体的头部继续执行新一轮循环。在Python中可以使用continue语句。

语法格式:

continue

功能:结束当前循环,开始新一轮循环。即当前循环中的剩余语句不再执行,程序跳转到循环的头部重新开始下一轮循环。通常continue语句也出现在if语句中,即通过某种条件判断来决定是否退出当前循环。

1.4 循环中的else语句

Python支持在循环语句中关联else语句。如果else语句和for循环语句一起使用,else块只在for循环正常终止时执行(而不是遇到break语句)。如果else语句用在while循环中,当条件变为False时,执行else语句。

使用else语句的循环结构如下所示: 

 [初始化语句]

while (循环条件):

      语句块

      [迭代语句]

else:

      语句块

 for <变量> in <序列>:

      循环体语句块

else:

      语句块

  1. while循环语法
  2. for循环语法

注意:

  1. else中的语句会在循环正常执行完后执行;
  2. 当for循环或while循环中的语句通过break跳出而中断时,不会执行else语句;
  3. for-else结构或while-else结构一般要和break语句一起使用,才能体现其强大之处;
  4. 在循环结构中使用else之后,有些程序不必使用标记变量了,并且跳出循环后也不需要额外的判断结构,程序结构简化很多。

输出100~200之间的所有素数的程序如下:

import math
count=0
for num in range(100,201):
    for i in range(2,int(math.sqrt(num))):
        if num%i==0:
            break
    else:
        if(count%5==0 and count!=0):
            print()
        print(num,end=';')
        count+=1

运行结果如下:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
101;103;107;109;113;
121;127;131;137;139;
143;149;151;157;163;
167;169;173;179;181;
191;193;197;199;
Process finished with exit code 0

 

1.5 嵌套循环

循环结构的循环体内可以包含任意Python语句,因此也可以包含另外的循环结构。其中,最外层的循环称为外循环,包含的循环称为内循环。内循环必须完全包含在外循环中。并且外循环和内循环的控制变量不能相同。在嵌套循环结构中,嵌套的层数可以是任意的。

1.6 字符串的遍历循环

除了遍历数字序列中的数字外,也可以使用for循环来处理单个的字符串或字符串列表。对于字符串列表,循环结构依次遍历字符串列表中的每一个字符串,直到最后一个字符串经过遍历且执行完循环体,循环结构结束。for语法中的<变量>的类型是字符串。

遍历字符串列表的for循环如下:

for <变量> in ['string1','string2',……,'stringn']:

      循环体语句块

[else:

      语句块] 

对于单独的一个字符串,在<序列>中可以是一个只加引号的任意字符串。循环结构执行时,从第一个字符开始,针对字符串中的每一个字符执行一次循环体。循环执行的次数就是字符串的长度。

遍历字符串的for循环如下:

for <变量> in 字符串:

      循环体语句块

[else:

      语句块] 

输入一个字符串,然后逆序输出的程序为:

str=input("请输入一个字符串:")
re=''
for ch in str:
    re=ch+re;
print(re)

执行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
请输入一个字符串:str
rts

Process finished with exit code 0

这里把这个例子写上去不是说这个题目很难,而是我觉得这个思路很好,很巧妙。

1.7 pass语句

在循环结构中,for语句或while语句之后必须紧跟至少包含一条语句的缩进语句块,有些情况下需要一个没有循环体语句块的循环结构,此时可以使用pass语句。pass语句是一个“什么也不做”的占位符语句,例如:

for m in [1,2,3,4,5]:

     pass

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值