Python从0到100(五):Python分支结构和循环结构

在这里插入图片描述

一、分支结构:

Python中的分支结构和循环结构是编写程序时常用的控制结构。在Python中,分支结构通过if、elif和else关键字来实现条件判断。在使用if语句时,程序会根据条件表达式的真假执行相应的代码块。

if condition1:
    # 如果条件1为真,则执行这里的代码
elif condition2:
    # 如果条件1为假,条件2为真,则执行这里的代码
else:
    # 如果以上条件都不满足,则执行这里的代码

1.if语句的使用

在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。下面的例子中演示了如何构造一个分支结构。

username = input('请输入用户名: ')
password = input('请输入口令: ')
# 用户名是admin且密码是123456则身份验证成功否则身份验证失败
if username == 'admin' and password == '123456':
    print('身份验证成功!')
else:
    print('身份验证失败!')

在这里插入图片描述

1.1if 语句

if语句是最简单的条件判断语句,它可以控制程序的执行流程。

 if 判断条件:
        满足条件时要做的事情1…
        满足条件时要做的事情2...(省略)...
        满足条件时要做的事情n…

1.2if-else语句

 if 条件:
        满足条件时要做的事情1
        满足条件时要做的事情2
        ...(省略)...
        满足条件时要做的事情3
    else:
        不满足条件时要做的事情1
        不满足条件时要做的事情2
        ...(省略)...
        不满足条件时要做的事情n

1.3if-elif语句

 if 判断条件1:
        满足条件1时要做的事情
elif 判断条件2:
        满足条件2时要做的事情
elif 判断条件3:
        满足条件3时要做的事情
  • 当满足判断条件1时,执行满足条件1时要做的事情,然后整个if结束;
  • 如果不满足判断条件1,那么判断是都满足条件2,如果满足判断条件2,就执行满足条件2时要做的事情,然后整个if结束
  • 当不满足判断条件1和判断条件2,如果满足判断条件3,则执行满足判断条件3时要做的事情,然后整个if结束。

1.4if嵌套

日常案例:坐车流程
在这里插入图片描述
if嵌套指的是在if或者if-else语句里面包含if或者if-else。

 if 条件1:
        满足条件1 做的事情1
        满足条件1 做的事情2
        ...(省略)...
        if 条件2:
            满足条件2 做的事情1
            满足条件2 做的事情2
            ...(省略)...

2.if语句实际操作

2.1英制单位英寸与公制单位厘米互换。

value = float(input('请输入长度: '))
unit = input('请输入单位: ')
if unit == 'in' or unit == '英寸':
    print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
    print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
    print('请输入有效的单位')

2.2百分制成绩转换为等级制成绩。

要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。

score = float(input('请输入成绩: '))
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'
print('对应的等级是:', grade)

3.3输入三条边长,如果能构成三角形就计算周长和面积。

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
    peri = a + b + c
    print(f'周长: {peri}')
    half = peri / 2
    area = (half * (half - a) * (half - b) * (half - c)) ** 0.5
    print(f'面积: {area}')
else:
    print('不能构成三角形')

二、循环结构:

我们在写程序的时候,一定会遇到需要重复执行某条指令或某些指令的场景。如果要实现每隔1秒中在屏幕上打印一次“hello, world”并持续打印一个小时,我们肯定不能够直接把print('hello, world')这句代码写3600遍,这里我们需要构造循环结构。所谓循环结构,就是程序中控制某条或某些指令重复执行的结构。Python提供了两种主要的循环结构,分别是for循环和while循环。

1.while循环

while循环语法格式:

while 条件表达式:
     条件满足,执行循环语句

条件表达式永远为true,无限循环。
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生bool值的表达式来控制循环,当表达式的值为True时则继续循环,当表达式的值为False时则结束循环。

下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

import random

# 产生一个1-100范围的随机数
answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
# 当退出while循环的时候显示用户一共猜了多少次
print(f'你总共猜了{counter}次')

在这里插入图片描述

2.for循环

Python中的for循环可以遍历任何序列的项目:
语法格式:

for 变量 in 序列:
    循环语句

例如:

for i in [0,1,2]:   
	print(i)

考虑到我们使用的数值范围经常变化,Python提供了一个内置range()函数,它可以生成一个数字序列。
语法格式:

for i in range(start,end):
     执行循环语句
  • 程序在执行for循环时:
  • 循环计时器变量i被设置为start;
  • 执行循环语句;
  • i 递增
  • 每设置一个新值都会执行一次循环
  • 当i等于end时,循环结束。

3.while嵌套

while嵌套指的是while循环里面还包含while循环。

 while 条件1:
        条件1满足时,做的事情1
        条件1满足时,做的事情2
        条件1满足时,做的事情3
        ...(省略)...
        while 条件2:
            条件2满足时,做的事情1
            条件2满足时,做的事情2
            条件2满足时,做的事情3
            ...(省略)...

三、Python的其他语句

1.break语句

break语句用于结束整个循环。 轮询列表变量ls,当轮询到"深"这个字时候,直接结束整个for循环,从而只打印"深"之前的"桃花潭水":

ls=["桃","花","潭","水","深","千","尺"]
s=""
for i in ls:
    if i == "深":
        break
    s = s + i
print(s)

在这里插入图片描述
我们对比一下两个程序:
第一个:

 for i in range(5):
      print("-------")
      print (i)

第二个:

i=1
for i in range(5):
     i+=1
     print("-------")
     if i==3:
         break
     print(i)

第一个是输出五次-------和数字,而第二次是循环前三次,第三次时i=3,触发break语句,结束遍历。

2.continue语句

continue的作用是用来结束本次循环,紧接着执行下一次的循环。for循环遍历字符串s,当遍历到字符等于"l"的时候,continue关键字仅仅只结束当前这一轮循环,而不会结束全部循环,所以当第三第四次遍历到"l"以后,for循环会继续遍历列表下一个字符,即"o"。所以最终纳入n=n+1统计的字符是"heoword",一共7个。

s="helloworld"
n=0
for i in s:
    if i == "l":
        continue
    n = n + 1
print(n)

对比一下这两个语句有啥不同:
第一个:

 for i in range(5):
      print("-------")
      print i

第二个:

i=1
for i in range(5):
     i+=1
     print("-------")
     if i==3:
         continue
     print(i)

第一个就是正常输出五次-------和数字,而第二次第三次遍历因为受到continue语句影响,第三次循环中间中断,不需要打印数字,直接进行第四次循环。
在这里插入图片描述

3.pass语句

pass是空语句,它是为了保持程序结构完整性。
pass语句不做任何事情,用作占位

for letter in 'Runoob': 
   if letter == 'o':
      pass
      print ('执行 pass 块')
   print ('当前字母 :', letter)
print ("Good bye!")

4.else语句

else语句可以和循环语句结合使用,并且else语句旨在循环完成后执行。

四、嵌套的循环结构

和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个乘法口诀表(九九表)。

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{i}*{j}={i * j}', end='\t')
    print()

在这里插入图片描述

很显然,在上面的代码中,外层循环用来控制一共会产生9行的输出,而内层循环用来控制每一行会输出多少列。内层循环中的输出就是九九表一行中的所有列,所以在内层循环完成时,有一个print()来实现换行输出的效果。

五、循环的例子

1.输入一个正整数判断它是不是素数。

提示:素数指的是只能被1和自身整除的大于1的整数。

num = int(input('请输入一个正整数: '))
end = int(num ** 0.5)
is_prime = True
for x in range(2, end + 1):
    if num % x == 0:
        is_prime = False
        break
if is_prime and num != 1:
    print(f'{num}是素数')
else:
    print(f'{num}不是素数')

在这里插入图片描述

2.输入两个正整数,计算它们的最大公约数和最小公倍数。

提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。

x = int(input('x = '))
y = int(input('y = '))
for factor in range(x, 0, -1):
    if x % factor == 0 and y % factor == 0:
        print(f'{x}{y}的最大公约数是{factor}')
        print(f'{x}{y}的最小公倍数是{x * y // factor}')
        break

如果知道循环的次数,我们通常使用for循环;如果循环次数不能确定,可以用while循环。在循环中还可以使用break来提前结束循环
通过合理地运用分支结构和循环结构,可以使程序按照不同条件做出相应的处理,并且重复执行特定的代码块,从而实现更加复杂和灵活的逻辑控制。这些控制结构是编写Python程序时的基础,掌握好它们能够帮助开发者编写出更加高效、功能完善的程序。

文末免费送书:深度学习经典案例解析(基于MATLAB) 人工智能 MATLAB

《深度学习经典案例解析(基于MATLAB)》分为“基础篇”“应用篇”和“实战篇”。通过17个案例循序渐进地介绍了深度学习网络的构建、训练、应用,以及如何基于MATLAB快速生成可执行的C、C++代码并在硬件上部署实现,内容讲解由浅及深、层层递进。
《深度学习经典案例解析(基于MATLAB)》所讲解的案例均配有代码实现,并对代码进行了详细注解,读者可通过阅读代码对《深度学习经典案例解析(基于MATLAB)》讲解的内容进行更加深入的了解。
《深度学习经典案例解析(基于MATLAB)》适合对人工智能、深度学习技术感兴趣的工程技术人员阅读,也适合人工智能、计算机科学技术相关专业的本科生、研究生学习参考。
在这里插入图片描述

抽奖方式

抽奖方式: 评论区随机抽取9位小伙伴免费送出!
参与方式: 关注博主、点赞、收藏、评论区评论“人生苦短,我用Python!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
活动截止时间: 2024-3-25 10:00:00
京东: 购买链接传送门

😄😄😄名单公布方式: 下期活动开始将在评论区和私信一并公布,中奖者请三天内提供信息😄😄😄

当前,人工智能技术飞速发展,对我们的生活产生了深远的影响:“刷脸支付”让交易变得快捷,“语音交互”让生活变得方便,“智能推送”让购物效率更高。在抗击新冠肺炎疫情的过程中,人工智能技术也大显身手,“智能胸片检测”“智能口罩检测”等技术得到了广泛应用。
  深度学习是人工智能技术的重要组成部分,关于深度学习的新理论、新方法、新技术层出不穷,很多读者加入到了深度学习技术的学习和科研的大军中。如何更全面、高效地掌握深度学习技术,是笔者一直关注和思考的问题。“实践出真知”,要想真正掌握深度学习技术,必须把它用起来,即“学以致用”。为此,笔者结合自身的教学和科研经验,对深度学习技术的理论、方法、应用进行了系统的总结与梳理,以案例的形式呈现给读者。与其他同类书籍相比,本书的特点在于:
  1)系统全面。本书分为“基础篇”“应用篇”和“实战篇”。通过17个案例循序渐进地介绍了深度学习网络的构建、训练、应用,以及如何基于MATLAB快速地生成可执行的C、C++代码并在硬件上部署实现,内容讲解由浅及深、层层递进,符合读者的认知心理。
  2)案例丰富。本书所讲解的案例中,既有交通标识检测、语音识别、车辆检测的深度学习经典案例,又有新冠肺炎胸片检测等多个贴近实际的案例,还讲解了基于MATLAB如何快速地生成可执行的C、C++代码并在树莓派上部署实现,实用性更强。本书所讲解的案例均配有代码实现,并对代码进行了详细的注解,读者可通过阅读代码,对本书讲解的内容进行更加深入的了解。
  3)生动形象。写一本有温度的书一直是笔者所追求的目标。在本书的写作过程中,笔者力求以生动形象的语言来解释抽象的概念,如将“例题、作业、考试”与“训练集、验证集、测试集”进行类比,将“针灸”与“非激活函数”进行类比,使语言更通俗、形象、易懂。
  本书适合以下读者阅读学习。
  对人工智能、深度学习技术感兴趣的工程技术人员。
  人工智能、计算机科学技术相关专业的本科生、研究生。
  回首本书的编写历程,笔者感受颇多,感谢为本书付出辛勤劳动的同仁,尤其是何灏、朱鹤、梁冠豪、马燕琳、刘莹等人。感谢家人的支持!
  在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/465821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进 | 图像去雾 | 利用图像去雾网络UnfogNet辅助YOLOv5进行图像去雾检测(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用UnfogNet超轻量化图像去雾网络,我将该网络结合YOLOv5针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv5的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可…

每天一点正压采样器小知识

只要你奔跑&#xff0c;这个世界就会跟着你奔跑&#xff0c; 只要你停驻&#xff0c;这个世界就会舍弃你独自奔跑&#xff0c; 唯有你确定一个方向&#xff0c;使劲的跑起来&#xff0c; 这个世界会为你而让路。 每天一点正压采样器小知识 该采样器活赛与气筒采用全金属密封&am…

操作系统知识-存储管理+文件管理管理-嵌入式系统设计师备考笔记

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 本章的主要内容见下图&#xff1a; 1、存储管理&#…

[c++]内存管理

1. C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1; int num1[10] { 1, 2, 3, 4 }; char char2[] "abcd"; const char* pChar3 "abcd"; …

Redis 八种常用数据类型详解

夯实基础&#xff0c;这篇文章带着大家回顾一下 Redis 中的 8 种常用数据类型&#xff1a; 5 种基础数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zse…

想进阿里?先搞懂Spring Bean的循环依赖!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”! 嗨,小伙伴们!我是小米,你们的技术分享小助手!今天我们要聊的话题可是技术圈内颇为热门的“阿里巴巴面试题:Spring的循环依赖”哦!相信很多小伙伴都会在技术面试中遇到类似的问题,没错,循…

QT网络编程之获取本机网络信息

一.概述 查询一个主机的MAC地址或者IP地址是网络应用中常用到的功能&#xff0c;Qt提供了QHostInfo和QNetworkInterface 类可以用于此类信息的查询 1.QHostInfo 类&#xff08;显示和查找本地的信息&#xff09; 2.QNetworkInterface 类&#xff08;获得应用程序上所在主机的…

8.JavaWebHTML标签与CSS页面美化和布局控制

目录 导语&#xff1a; 一、HTML表单标签 二、CSS页面美化和布局控制 结语&#xff1a; 导语&#xff1a; 在Web开发中&#xff0c;HTML和CSS是两个不可或缺的技术。HTML&#xff08;HyperText Markup Language&#xff09;用于构建网页的结构&#xff0c;而CSS&#xff08…

【送书福利第五期】:ARM汇编与逆向工程

文章目录 &#x1f4d1;前言一、ARM汇编与逆向工程1.1 书封面1.2 内容概括1.3 目录 二、作者简介三、译者介绍&#x1f324;️、粉丝福利 &#x1f4d1;前言 与传统的CISC&#xff08;Complex Instruction Set Computer&#xff0c;复杂指令集计算机&#xff09;架构相比&#…

RabbitMQ的幂等性、优先级队列和惰性队列

文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、…

day12-SpringBootWeb 登录认证

一、登录功能 Slf4j RestController public class LoginController {Autowiredprivate EmpService empService;PostMapping("/login")public Result login(RequestBody Emp emp){log.info("员工登录: {}", emp);Emp e empService.login(emp);//登录失败, …

2024考研国家线公布,各科分数线有哪些变化?考研国家线哪些涨了,哪些跌了?可视化分析告诉你

结论在文章结尾 2024考研国家线 一、近五年国家线趋势图-学术硕士 文学 管理学 工学照顾专业 体育学 交叉学科 军事学 历史学 理学 享受少数名族照顾政策的考生 中医类照顾专业 教育类 艺术类 医学 工学 哲学 法学 农学 经济学 二、近五年国家线趋势图-专业硕士 中医 应用心理 …

S3fd: Single shot scale-invariant face detector

目录 摘要一、介绍二、相关工作三、单镜头尺度不变人脸检测器3.1. Scale-equitable框架3.2. 尺度补偿锚匹配策略3.3. 最大输出背景标签3.4 训练4.实验4.1. 模型分析4.2. 基准评价4.3 推理时间 5 结论 摘要 本文提出了一种实时人脸检测器&#xff0c;称为单镜头尺度不变人脸检测…

判断素数(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int value 0;int i 2;int result 0;//循环获取用户值并判断值是否符合要求&#xff1b;while (1){//提示用户值需要满…

STM32中freertos任务不能调度的原因解决

本文是项目中的定位问题&#xff0c;如果定位到同样问题&#xff0c;可以按下面方法解决。 问题定位 这行assert代码主要判断系统中最大中断优先级数量是否等于内核中断优先级&#xff0c;实际意思就是要求内核中断优先级为系统最低优先级&#xff08;freertos中0为最高优先级…

文章类型分类项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 项目背景 在数据科学和机器学习的领域中&#xff0c;文本分析一直是一个引人注目的话题。这个项目的核心挑战是利用机器学习技术&#xff0c;根…

数据结构.pta测试二

#include<iostream> using namespace std; typedef struct node {int data;node* next; }*List;List listPoduce() {int a;List L;node * r, * new0;//创建指针L new node();//分配空间r L;cin >> a;while (a ! -1){new0 new node();new0->data a;r->nex…

基于单片机的灭火机器人设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 4 1.1 方案论证 4 1.2 灭火机器人系统工作原理 4 2 系统硬件设计 6 2.1 单片机 6 2.2 火焰探测系统设计 8 2.3 灭火系统设计 8 2.4 循迹模块设计 9 2.5 电机驱动模块 10 3 系统软件设计 12 3.1 系统软件开发环境 12 3.2 系统…

数据库事务中“锁”的分类

数据库事务中的锁可以按照不同的维度进行分类。以下是一些常见的分类方式&#xff1a; 1、按锁的粒度分类&#xff1a; 行锁&#xff08;Row-level lock&#xff09;&#xff1a;锁定单个或少量的数据行。这种锁粒度小&#xff0c;允许高度的并发&#xff0c;但管理开销大。页…

【每日一题】303. 区域和检索 - 数组不可变-2024.3.18

题目&#xff1a; 303. 区域和检索 - 数组不可变 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a;…