当前位置: 首页 > news >正文

【Python学习笔记】第二章循环:while循环,for循环,break和continue语句,死循环,循环的嵌套

Python学习笔记之[第二章]循环

  • 一、while循环
    • 1.基本格式:
    • 2.计算1-100的累加和:
    • 3.输出10以内所有奇数:
    • 4.输出1-100的偶数累加和与奇数累乘积:
  • 二、break语句和continue语句,break用于跳出/结束当前循环,continue用于跳出当前循环的本次循环
    • 案例1.吃苹果,吃到第三个吃出半条虫,无心再吃:
    • 案例2.吃苹果,吃到第三个吃出半条虫,丢掉第三个继续吃:
  • 三、死循环
    • 1.基本格式:
    • 2.练习代码:
  • 四、循环的嵌套
    • 1.题目:锻炼身体,跑步4圈+10分钟深蹲为1组,需要做3组训练
    • 2.练习代码:
  • 五、循环练习作业
    • 1.相亲猜测年龄问题:
    • 代码:
    • 2.农场养兔子问题:
    • 代码:
  • 六、打印矩形,直角三角形,乘法口诀表
    • 1.打印一个5行5列的矩阵:
    • 2.打印一个9行9列的直角三角形:
    • 3.打印乘法口诀:
  • 七、for循环和range函数
    • 1.for循环:
    • 2.range函数:
  • 八、案例:用for循环实现用户登录
    • 1。题目:
    • 2.答案:
  • 九、for循环的嵌套
    • 1.案例1:使用for循环输出9*9乘法表
    • 2.案例2:过7游戏
    • 3.案例3:输入一个字母查询是否在字符串中:
    • 4.for循环与while循环转换:
  • 十、报数游戏
    • 1.题目:
    • 2.解题代码:

CSDN话题挑战赛第2期
参赛话题: 学习笔记

一、while循环

1.基本格式:

i=0
while i<5:
print(‘老婆大人,我错了’)
i=i+1

2.计算1-100的累加和:

结果:5050

i=1
result=0
while i<=100:
    result+=i
    i=i+1
print(result)

3.输出10以内所有奇数:

i=1
while i<=10:
    if i%2!=0:
        print("%d是奇数"%i)
    i=i+1

4.输出1-100的偶数累加和与奇数累乘积:

结果:2550和654729075

# 输出1-100的偶数累加和
i=1
sum=0
while i<=100:
    if i%2==0:
        sum+=i
    i=i+1
print(sum)
# 输出1-100的奇数累乘积
i=1
sum=1
while i<=20:
    if i%2!=0:
        sum*=i
    i=i+1
print(sum)

二、break语句和continue语句,break用于跳出/结束当前循环,continue用于跳出当前循环的本次循环

案例1.吃苹果,吃到第三个吃出半条虫,无心再吃:

i=1
while i<=5:
    print(F'我吃了{i}个苹果')
    if i==3:
        break
    i=i+1

结果:

我吃了1个苹果 我吃了2个苹果 我吃了3个苹果

案例2.吃苹果,吃到第三个吃出半条虫,丢掉第三个继续吃:

i=0
while i<5:
    i = i + 1
    print(F'我吃了{i}个苹果')
    if i==3:
        print('这个苹果有虫子')
        continue

结果:

我吃了1个苹果 我吃了2个苹果 我吃了3个苹果 这个苹果有虫子 我吃了4个苹果 我吃了5个苹果

三、死循环

1.基本格式:

当条件一直成立无法从循环中退出时我们称之为死循环,可以利用死循环做很多事情,比如让循环一直进行直到玩家不想继续时可以改变条件内容使其退出,可以参考下面的案例,升级版猜拳游戏

2.练习代码:

t=0
p1=p2=0
while True and t==0:
    player = int(input('请输入一个拳形(0 石头,1 剪刀,2 布):'))
    import random  # 导入随机模块
    computer = random.randint(0, 2)  # 随机生成[0,2]之间的一个数
    print(F'电脑出的是:{computer}')
    result = player - computer
    if result == -1 or result == 2:
        print('玩家获胜')
        p1=p1+1
    elif result == 0:
        print('平局')
    else:
        print('电脑获胜')
        p2=p2+1
    print(F'当前比分:[玩家{p1}:电脑{p2}]')
    if p1>=3 or p2>=3:
        if p1>=3:
            print('玩家获得最终胜利')
        else:
            print('电脑获得最终胜利')
        break
    # t = int(input('请问是否继续游戏,是输入0,否输入1:'))

四、循环的嵌套

1.题目:锻炼身体,跑步4圈+10分钟深蹲为1组,需要做3组训练

分析:外层循环是1-3,内层循环为4圈+1深蹲

2.练习代码:

i=1
while i<=3:
    print(f"第{i}组训练开始")
    j=1
    while j<=4:
        print(f"我跑了{j}圈")
        j=j+1
    print('10分钟深蹲结束')
    i+=1

五、循环练习作业

1.相亲猜测年龄问题:

题目:相亲时,聊到年龄问题,女孩允许男孩尝试猜3次,3次都没猜对的话,就直接退出,猜对了打印恭喜猜对了并退出。

代码:

n=int(input('请输入女士的年龄:'))
i=0
while i<3:
    t = int(input('请猜测一下我的年龄:'))
    if t==n:
        print('恭喜你,猜对了!')
        break
    else:
        print('猜错了,你还有%d次机会'%(2-i))
        if t>n:
            print("小提示:猜大了")
        else:
            print("小提示:猜小了")

2.农场养兔子问题:

题目:在一个农场养了3只小白兔,每隔一年兔子的数量会翻涨到原来的2倍,那么在资源条件允许
并且所有兔子生存的条件下,N年后,兔子的数量是多少?
提示:N=1,有6只兔子,N=2,有12只兔子。以此类推…

代码:

n=int(input('请输入N的值:'))
sum=3
i=0
while i<n:
    sum=sum*2
    i+=1
print(sum)

六、打印矩形,直角三角形,乘法口诀表

1.打印一个5行5列的矩阵:

i=0
j=0
while i<5:
    j=0
    while j<5:
        print("*",end=" ")
        j+=1
    print()
    i+=1

2.打印一个9行9列的直角三角形:

i=0
j=0
while i<9:
    j=0
    while j<=i:
        print("*",end=" ")
        j+=1
    print()
    i+=1

3.打印乘法口诀:

i=1
j=1
while i<=9:
    j=1
    while j<=i:
        print(F"{i}*{j}={i*j}",end=" ")
        j+=1
    print()
    i+=1

七、for循环和range函数

1.for循环:

# 用于循环遍历将字符串中的字符全输出
str1='Hello Python'
for i in str1:
    print(i)

2.range函数:

# range是一个类,一般配合for循环使用,没办法直接输出
for i in range(1,10,2): #range(起始值,结束值,步长),包含起始位置,不包含结束位置
    print(i)
# 可使用list(range)来打印range中的所有元素
print(list(range(0,5))) # [0, 1, 2, 3, 4] 步长省略时,默认为1
# 如果起始位置是0则起始位置可以省略,但是省略起始位置时,步长也必须省略
print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从大到小的情况:步长为负数
print(list(range(10,5,-1))) # [10, 9, 8, 7, 6]

八、案例:用for循环实现用户登录

1。题目:

1.输入用户名和密码
2.判断用户名和密码是否正确(username=‘admin’,password=‘admin888’)
3.登录仅有三次机会,超过3次会报错

分析:3次机会写成代码就是最多循环三次,当其中有一次成功时使用break语句提前退出

2.答案:

for i in range(0,3):
    username=input('请输入用户名:')
    password = input('请输入密码:')
    if username!='admin':
        print(f'用户名错误!你还有{2-i}次机会重新输入')
    elif password !='admin888':
        print(f'密码错误!你还有{2-i}次机会重新输入',)
    else:
        print('恭喜你!登录成功')
        break

九、for循环的嵌套

1.案例1:使用for循环输出9*9乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(f'{i}*{j}={i*j}',end=' ')
    print()
    # 输出9*9乘法表

2.案例2:过7游戏

# 需求:
# 数数,1-100中凡是7和7的倍数,以及数字中带7的数,输出哈,否则输出数字

for i in range(1,101):
    if (i-1) % 10 == 0: # 每10行换行一次
        print()
    a=i%10 # 个位
    b=i//10 # 十位
    # print(f'{i}的十位是{b}个位是{a}')
    if a==7 or b==7 or i%7==0:
        print('哈',end=' ')
        continue
    else:
        print(i,end=' ')

3.案例3:输入一个字母查询是否在字符串中:

a='withyou'
char1=input('请输入一个字母:')
t=0
for i in a:
    if i==char1:
        print('找到了')
        t=1
        break
if t==0:
    print('未找到此字母')
# 或者这样:
# len1=0
# len1+=1
# if len1==len(a):
#     print('未找到此字母')

4.for循环与while循环转换:

i=0
while i<=100:
    if i==60:
        print('下载非法文件,已将你举报!下载中止')
        break
    print(f'下载进度:{i}%')
    i+=1
else:
    print("下载完成")

for i in range(0,101):
    print(f'下载进度{i}%')
    if i == 60:
        print('下载非法文件,已将你举报!下载中止')
        break
else:
    print("下载完成")

十、报数游戏

1.题目:

需求:
大家从1开始报数,报到数字尾数是7或该数字是7的倍数时,跳过这个数字,不进行报数。
所有同学都参与游戏后,游戏结束,例如:学生数量为50,游戏结束后,报数的同学数量为39

解题思路:当报到个位数是7或者7的倍数时,使用continue跳过当前学生报数。

2.解题代码:

count=int(input('请输入有多少人参与本次报数游戏:'))
sum1=0
for i in range(1,count+1):
    a=i%10 # 个位
    if a==7 or i%7==0:
        continue
    else:
        print('报数:%d'%i)
        sum1+=1
print('共有%d个人参与报数'%sum1)

感谢收看!此系列会持续更新,欢迎大家订阅本专栏(免费),有任何问题都可以发私信一起探讨。

相关文章:

  • 计算机网络【IP协议与以太网】
  • iVX低代码平台系列详解 --界面功能(一)
  • 硬件科普系列之硬盘——总线、协议、接口和固态硬盘篇
  • 目标检测算法——遥感影像数据集资源汇总(附下载链接)
  • 第一章 时间复杂度和空间复杂度
  • 【论文阅读】SimGNN:A Neural Network Approach to Fast Graph Similarity Computation
  • Spring源码分析之AOP
  • 【0136】【libpq】startup packet应用机制及构建过程(6)
  • 如今Android 工作难找,面试也难~ 这是在劝退吗?
  • WebShell后门检测与WebShell箱子反杀
  • Java毕业设计选题推荐 SpringBoot毕设项目分享
  • 【Linux kernel/cpufreq】framework ----cpufreq core(1)
  • 一文2000字手把手教你自动化测试平台建设分享
  • 国务院:电子印章跨地区跨部门互信互认,契约锁助力企业办事提效
  • 同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android单元测试 - 几个重要问题
  • Apache Zeppelin在Apache Trafodion上的可视化
  • EOS是什么
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Otto开发初探——微服务依赖管理新利器
  • Redis的resp协议
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 程序员该如何有效的找工作?
  • 力扣(LeetCode)21
  • 微信小程序--------语音识别(前端自己也能玩)
  • 用Canvas画一棵二叉树
  • scrapy中间件源码分析及常用中间件大全
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (3) cmake编译多个cpp文件
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (九)One-Wire总线-DS18B20
  • (转)菜鸟学数据库(三)——存储过程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ***通过什么方式***网吧
  • .Net7 环境安装配置
  • .Net面试题4
  • .net实现客户区延伸至至非客户区
  • .NET文档生成工具ADB使用图文教程
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @Autowired @Resource @Qualifier的区别
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ARM]ldr 和 adr 伪指令的区别
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C++打怪升级]--学习总目录
  • [Cloud Networking] Layer Protocol (continue)
  • [CodeForces-759D]Bacterial Melee
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)
  • [docker] Docker容器服务更新与发现之consul