Task05扩展01学习笔记

news/2024/12/4 22:46:25/文章来源:https://www.cnblogs.com/Uu-up/p/18587258

Task05:条件Conditionals

if 语句

  • 通过缩进上下对齐判断条件满足要执行的内容
if 条件:print()
  • 例:
  1. f(0) --> ABCD
  2. f(1) --> AD
def f(x):print("A", end="")if x == 0:print("B”, end="")print("C", end="")print("D")

if-else 语句

  • 条件成立执行if下面的代码,条件不成立执行else下面的代码
  • 例:
  1. float(9) --> hello wahoo! goodbye
  2. float(11) --> hello ruh roh goodbye
x= input("x=")
x= float(x)
print("hello")
if x< 10:print("wahoo!")
else:print("ruh roh")
print("goodbye")

if-elif-else 语句

  • if条件满足时执行if下面的代码,不满足时看是否满足elif的条件,满足则执行elif下的代码,不满足则执行else下面的代码
  • 例:
print("hello")
if x< 10:print("wahoo!")
elif x<= 99:print("meh")
else:print("ruh roh")
print("goodbye")

match ... case 语句

  • Python 3.10增加了 match ... case 的条件判断,不需要再使用一连串的if-else 来判断了。
  • match后的对象会依次与case后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_可以匹配一切。
  • 语法格式如下:
match subject:case <pattern_1>:<action_1>case <pattern_2>:<action_2>case <pattern_3>:<action_3>case _:<action_wildcard>
  • case_:类似于C语言中的 defau1t:,当其他 case 都无法匹配时,匹配这条_保证永远会匹配成功。

扩展01:代码风格/Python规范Style

  • 否定条件(带有 else 部分)
  1. 可能不清晰的:
b=True
if not b:print('no')
else:print('yes')
  1. 清晰的:
b = True
if b:print('yes')
else:print('no')
  • 空白的 if 部分
  1. 不清晰的:
b = False
if b:pass
else:print('no')
  1. 清晰的:
b=False
if not b:print('no')
  • 用嵌套的 if 而不是 and 来判断
  1. 混乱的:
b1 = True
b2 = True
if bl:if b2:print('both!')
  1. 清晰的:
b1 = True
b2 = True
if bl and b2:print('both!')
  • 使用 if 而不是 else 来控制
  1. 可能会引入bug:
b = True
if b:print('yes')
if not b:print('no')
  1. 更好的做法:
b = True
if b:print('yes')
else:print('no')
  • 使用一些 trick(如用算数逻辑来代替布尔逻辑)
  1. 不清晰的:
x= 42 
y=((x>θ) and 99)
  1. 清晰的:
x= 42
if x>0:y = 99
  • 例1:
  1. 又混乱又有产生 bug 的风险:
x=10
if x< 5:print('small')
if(x>= 5)and(x< 10):print('medium')
if(x>= 10)and(x< 15):print('large')
if x >= 15:print('extra large')
  1. 更好的做法:
x= 10
if x< 5:print('smal1')
elif x< 10:print('medium')
elif x< 15:print('large')
else:print('extra large')
  • 例2:
  1. 又混乱又有产生 bug 的风险:
c ='a'
if(c >= 'A')and(c <= 'Z'):print('Uppercase! )
if(c >= 'a')and(c <= 'z'):print('lowercase!')
if(c<'A')or((c>'Z')and(c<'a')or(c <= 'z'):print('not a letter!')
  1. 更好的做法:
c='a'
if(c>='A')and(c<='Z'):print('Uppercase!')
elif(c >= 'a')and(c<='z'):print('lowercase!')
else:print('not a letter!')

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDCL算法

1. CDCL伪代码 CDCL(CNF):副本 = CNF // 创建CNF的副本,不更改原CNFwhile true:while 副本含有单位子句:对副本使用单位传播;if 副本中含有取值为假的子句: // 发现冲突if 现在的决策层是0:return false; // 不能满足C = 子句学习(CNF, 副本) // 吸取教训根据C回到一个更早的决…

零基础快速入门软件测试

一、项目 1. 项目成员先简要了解一下软件项目组中所涉及的一些重要角色及关键词项目:软件研发项目,包括从前期项目预研、立项、组建项目团队、设计开发软件、测试调试、交付验收,以及软件运营等各项具体的工作 项目经理:软件项目的总负责人,既需要有广泛的计算机专业知识,…

全球气象数据ERA5的下载方法

本文介绍在ERA5气象数据的官方网站中,手动下载、Python代码自动批量下载逐小时、逐日与逐月的ERA5气象数据各类产品的快捷方法~本文介绍在ERA5气象数据的官方网站中,手动下载、Python代码自动批量下载逐小时、逐日与逐月的ERA5气象数据各类产品的快捷方法。ERA5(fifth gener…

高性能计算-NEON-图像旋转

1. 对512*512 png 四通道图像顺时针旋转90度 思路: 像素分块,对块内转置;再水平镜像。图像库使用 stb img 2. 代码 #include <stdio.h> #include <arm_neon.h>#include <stdlib.h> #define STB_IMAGE_IMPLEMENTATION #include "./stb/stb_image.h&quo…

使用自定义 MSBuild Task 阻止 git 的大文件提交

一个自定义 MSBuild Task 的实际案例NuGet Gallery | Jgrass.MSBuild.GitTask 前言 在 .NET 项目自定义 MSBuild Task 中提到,可以使用自定义 MSBuild Task 来实现自定义功能。 这里介绍实现的 git 提交大文件提交拦截功能。 引入 nuget 包之后,设置好要拦截的大小,内置的 L…

ElasticSearch学习笔记

ES7.x和ES8.x的学习笔记1.ElasticSearch概述 1.1 ElasticSearch是什么 Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上 百台服务器,处理PB级别的数…

不死的魔女与灾厄的少年

传闻......森林的深处里住着一位不死的魔女森林的深处,住着一位魔女。 她已经活了几十个世纪,每代王国的历史书籍中都有她的出现。 人们称她为: “不死的魔女” 寂静了百年的森林,在某一天,闯入了一个不速之客,他倒在了魔女的屋子前。 那是一个浑身染血的少年,不着片缕,…

地址冲突检测(DAD)

地址冲突检测(DAD) 目录地址冲突检测(DAD)一、前言二、免费ARP报文实验拓扑报文分析 一、前言 公网: public,互联网可以访问 ,地址必须唯一 私网:RFC1918隔离公网,安全复用 优点:地址段重叠使用 缺点:地址冲突 IPV6唯一本地地址 = IPV6私网地址,提供global id二、免…

2025年昆明理工大学MBA研究生招生人数

--昆工MBA考研、管理与经济学院、125100工商管理、125602项目管理、199管理类综合能力、F009 政治、F008政治+项目管理概论

ybt2.5章AC自动机题解

算法理解 即在字典树上跑kmp T1: 根据这个结论我自己手搓了一个AC自动机上去,喜提TLE 我是如何操作的呢? 我当时的想法是这样的:我们把字典树从根到该节点形成的链看成是一个模式串与文本串进行匹配,然后就用一个dfs来传递j就可以解决了 然后我打开书一看到这幅图,立马就不…

了解checksec显示的各种参数和保护

Arch:内核(32位/64位) RELRO 在Linux系统安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域。所以在安全防护的角度来说尽量减少可写的存储区域对安全会有极大的好处. GCC, GNU linker以及Glibc-dynamic linker一起配合实现了一种叫做relro的技术: rea…