Python修炼秘籍--程序控制结构下(Day5)

四、程序的循环结构

  • 循环用于重复地执行代码块。
  • Python中有两种主要的循环:for循环和while循环。
  • for循环通常比while循环更容易使用,也不那么容易出错,但没有while循环灵活。

1、for循环

  • 格式:
   for <var> in <sequence>: 
        <statements>
  • 功能:循环变量var遍历序列中的每一个值,循环的语句体为每个值执行一次。序列可以是字符串、列表、元组、字典等数据结构。

例1:打印出字符串“hello world!”中的每个字符,每个字符一行,效果如下
在这里插入图片描述

分析:每个字符一行,要把字符一个一个从字符串拿出来,重复执行每个字符打印一次。使用循环结构for循环,实现重复执行

在这里插入图片描述

  • 常见遍历结构:列表、元祖
    在这里插入图片描述

在这里插入图片描述

  • for循环经常与range()函数一起使用,range()函数返回一个range类,类似于列表,for循环可以遍历其中的元素。
  • range()函数格式:range(start,stop[,step])
  • 参数start表示列表开始值,默认为0;参数stop表示列表结束值,不能缺省,循环到stop-1停止;参数step表示步长,默认值为1。
  • 可以用list()tuple()方法,将range转为列表或元组形式输出
    在这里插入图片描述

例2:for循环示例
在这里插入图片描述


例3:求1+2+3+4+5+……+n
第一步:确定IPO

  • 输入:一个整数n
  • 输出:求和的结果
  • 处理:
    • 定义一个变量s,初值为0
    • 使用range函数生成1,2,3,4…,i,…n的数字
    • 重复s = s + i
      在这里插入图片描述

第二步:在IDLE编写程序
在这里插入图片描述

第三步: 调试运行


例4:物不知数
在这里插入图片描述

分析题目:有一些数字如果除以3余2,除以5余3,除以7也余2,输入一个数n,找到1-n之间满足条件的数并打印出来?

思路:

  • 从1开始试,找满足条件的数打印出来,一直试到n,这种思路叫穷举法
  • 使用range函数生成1,2,3,4…,i,…n的数字
  • 每个数字 i 判断是否满足i%3 == 2 and i%5 == 3 and i%7 == 2的条件
  • 打印满足条件的数字 i

确定IPO

  • 输入:一个正整数n
  • 输出:满足条件的数字 i
  • 处理:重复判断每个数字是否符合条件

第二步:在IDLE编写程序
在这里插入图片描述


2、while循环

  • 格式:
while <condition>:
    <statements>
  • 功能:当条件表达式为真时,依次执行while中的语句,直到循环表达式的值为假。
    在这里插入图片描述

例5:计算前多少个自然数的和刚好超过100

  • 分析:1+2+3+……+?刚好超过100,不知道加到几结束。
  • 不确定重复求和的次数
  • 使用while循环,通过判断是否满足某个指定的条件来决定是否进行下一次循环

第二步:在IDLE编写程序
在这里插入图片描述

第三步: 调试运行

for循环和while循环比较
一般来说,固定次数的循环问题使用for循环和while循环都可以解决,而循环次数不固定的循环问题只能使用while循环解决。

3、流程跳转语句:break和continue

  • 用于while或for循环语句中
  • break语句的作用是:结束当前正在执行的循环(for、while),转而执行这些结构后面的语句。
  • continue语句的作用是:结束当前正在执行的这一次循环(for、while),接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
  • continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环,不再进行条件判断。

在这里插入图片描述

4、循环中的else语句

  • 在Python语言中else可与循环搭配使用;
  • else:后的表达式在for循环列表遍历完毕后或while条件语句不满足的情况下执行;
  • 如果循环语句中出现else语句,则它是循环语句的组成部分。
  • 当在循环中遇到break、return而结束时,不是正常结束,程序将略过else子句

在这里插入图片描述


例6:多输入数字求和
在这里插入图片描述

思路:

  • 输入一批数字,输入过程要重复执行多次,输入语句要在循环体中
  • 无法确定循环次数,使用while循环

确定IPO

  • 输入:重复输入多个数字
  • 输出:多个数字的和
  • 处理:如果输入的数字不为空,求和,输出下一个数字,判断是否为空,若不为空,求和,输入下一个数字,判断是否为空,若不为空,求和,输入…………当输入为空,结束循环,输出和

第二步:在IDLE编写程序
在这里插入图片描述

第二步:在IDLE编写程序——另一种思路
在这里插入图片描述

在这里插入图片描述

当while循环无法结束时进入死循环
死循环只在特殊情况下有用

总结

  • 用for和while关键字实现循环结构,for循环都可以改写成while形式
  • for循环又称遍历循环
    • 从遍历结构中提取元素,遍历结构控制循环次数
    • 确定循环次数或有遍历结构时一般使用for循环
  • while循环又称条件循环
    • 根据条件判断语句控制循环结构是否执行
    • 循环次数不确定或需要构建无限循环时使用while循环
    • 警惕死循环
  • 循环中如果执行break语句,退出break所在的循环
  • 循环中如果执行continue语句,立刻执行下一次循环
  • for和while与else搭配使用

例7:整数的加减和
在这里插入图片描述

思路:
● 使用range函数生成1-966,确定循环次数,使用for循环
● 根据每个数字i是奇数还是偶数选择加法还是减法

确定IPO
● 输入:无
● 输出:计算结果
● 处理:……

第二步:在IDLE编写程序
在这里插入图片描述


例8:百钱买百鸡
在这里插入图片描述

思路:
穷举法:假设公鸡买g只,母鸡m只,小鸡x只

g=1,m=1,x=1 g+m+x!=100, 5*g+3*m+x/3!=100 X
……
g=1,m=1,x=99 g+m+x!=100, 5*g+3*m+x/3!=100 X
……
g=1,m=2,x=1 g+m+x!=100, 5*g+3*m+x/3!=100X
……
g=4,m=18,x=78 g+m+x==100, 5*g+3*m+x/3==100 √
……
g=4,m=34,x=99 g+m+x!=100, 5*g+3*m+x/3!=100X
……
g=100,m=100,x=100 g+m+x!=100, 5*g+3*m+x/3!=100X

第二步:在IDLE编写程序
在这里插入图片描述

时间复杂度:100*100*100

第三步:优化代码
在这里插入图片描述

时间复杂度:100*100

在这里插入图片描述

时间复杂度:20*30

例9:判断素数
在这里插入图片描述
第二步:在IDLE编写程序
在这里插入图片描述

第三步:调试运行
在这里插入图片描述


整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣✨
欢迎专注我的公众号:AdaCoding 和 Github:AdaCoding123
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值