Python | 期末复习具体知识点(hbut 邵光普)


Python 复习具体知识点


1、表达式 not 3 or6 的值:

在Python中,not 3 or 6 这个表达式的含义可以分解为以下步骤来理解:

  1. not 3not 是一个逻辑运算符,用于对一个布尔值进行取反。但在这里,它作用于一个整数值 3。在Python中,任何非零数值都被视为 True,因此 not 3 会被转换为 False
  2. False or 6:接下来,or 运算符会检查其左侧的值。如果左侧为 False(或任何被视为 False 的值,如 0None、空字符串等),则 or 运算符会返回其右侧的值。在这个例子中,False or 6 会返回 6

所以,整个表达式 not 3 or 6 的结果是 6

注意:在Python中,布尔运算符 and 和 or 实际上返回的是它们操作数的值,而不仅仅是 True 或 False。这被称为短路行为:

  • 对于 and 运算符,如果左侧为 False,则整个表达式立即返回左侧的值,不再评估右侧。如果左侧为 True,则返回右侧的值。
  • 对于 or 运算符,如果左侧为 True,则整个表达式立即返回左侧的值,不再评估右侧。如果左侧为 False,则返回右侧的值。

这种特性在处理条件逻辑时非常有用,但也需要小心处理,以确保代码的逻辑符合预期。

2、集合推导式:例如用集合推导式生成1到10之间所有的偶数。

# 使用集合推导式生成1到10之间的所有偶数  
even_numbers = {i for i in range(1, 11) if i % 2 == 0}  # 打印结果  
print(even_numbers)


3、字典的 get 方法:x=dict(name='wang',age=23),x.get('name',"i')的值

在Python中,字典(dict)的 get 方法是一个非常有用的方法,用于从字典中获取指定键的值。如果键不存在于字典中,get 方法允许你提供一个默认值作为替代。

基本语法

dict.get(key, default=None)
  • key:需要获取的值的键。
  • default(可选):如果键不存在于字典中,则返回此默认值。默认为 None

示例

# 创建一个字典 
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'} # 使用 get 方法获取键 'name' 的值 
print(my_dict.get('name')) # 输出:'Alice' # 尝试获取不存在的键 'phone' 的值,但不提供默认值 
print(my_dict.get('phone')) # 输出:None # 尝试获取不存在的键 'phone' 的值,并提供默认值 'Unknown' 
print(my_dict.get('phone', 'Unknown')) # 输出:'Unknown'

优点

使用 get 方法的好处之一是,当你尝试访问字典中不存在的键时,它不会引发 KeyError 异常,而是返回一个默认值。这可以让你的代码更加健壮,尤其是在你不确定某个键是否存在于字典中的情况下。


4、内置函数 zip、eval、filter、enumerate等

  • zip(iterable) 将元素打包成元组,返回一个zip对象
  • Python中zip函数的使用方法
  • eval函数:去掉字符串的“ ”
  • filter(function,iterable) function应该返回一个bool值,iterable是可迭代对象,如列表,元组等
  • 留下来的是使得funtion为True的
  • Python中的filter函数用法详解
  • enumerate(iterable,指定的开始索引值):对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
  • python enumerate用法总结
list1=["I","am","happy","cat"]
for index,k in enumerate(list1,1):print(index,k)

1 I
2 am
3 happy
4 cat

5、匿名函数 lambda:x= [lambda x,y:x+y],x[0](3,2)的值

# 正确的构造应该是分两步的  
# 第一步:定义一个包含 lambda 函数的列表  
lambdas = [lambda x, y: x + y]  # 第二步:调用列表中的 lambda 函数  
result = lambdas[0](3, 2)  print(result)  # 输出应该是 5


6、列表推导式:x=[ch for chin'abcdcab'],len(x)的值

x=[ch for ch in 'abcdcab']
print(x)
print(len(x))

['a', 'b', 'c', 'd', 'c', 'a', 'b']
7


7、字符串数据类型的 jion方法与split 方法

" ".join(iterable) 可迭代对象的元素必须是字符类型!

Python中的join函数 

Python join()函数使用详解


s.split(",",2)  #2是分割次数

Python中超好用的split()函数 

82. Python split方法-分割字符串_split python-CSDN博客


8、实参前面一个*是序列解包

使用 * 获取值,默认为列表list

【Python小知识】:什么是序列解包

Python基础12-序列解包_python序列解包

persons_list = [{'name': 'John', 'age': 30}, {'name': 'Alice', 'age': 25}]for person in persons_list:name, age = person.items()#name  输出: ('name', 'John')  age 输出: ('age', 30)print(f"Name: {name[1]}, Age: {age[1]}")person = {'name': 'John', 'age': 30}
name, age = person.items()
print(name)  # 输出: ('name', 'John')
print(age)   # 输出: ('age', 30)

Name: John, Age: 30
Name: Alice, Age: 25
('name', 'John')
('age', 30) 


person = {'name': 'John', 'age': 30}
keys = person.keys()
values = person.values()print(keys)   # 输出: dict_keys(['name', 'age'])
print(values) # 输出: dict_values(['John', 30])
为什么输出前面有 dict_keys

在Python中,当你调用字典的.keys().values()方法时,你得到的并不是一个普通的列表,而是一个视图对象(view object)。这些视图对象分别是dict_keysdict_values的实例,它们提供了字典键或值的动态视图,这意味着它们会反映字典的任何后续更改。

这些视图对象并不是为了直接打印给用户设计的,但它们具有一些与列表相似的特性,比如你可以迭代它们。然而,当你尝试直接打印这些视图对象时,Python会告诉你它们的类型,这就是为什么你看到了dict_keysdict_values这样的输出。

如果你想要一个普通的列表,以便可以打印它或者对它进行其他列表特有的操作,你可以使用list()函数来转换这些视图对象:

person = {'name': 'John', 'age': 30} 
keys = list(person.keys()) 
values = list(person.values()) print(keys) # 输出: ['name', 'age'] 
print(values) # 输出: ['John', 30]

现在,keysvalues都是普通的列表,所以当你打印它们时,你会看到列表的内容,而不是它们的类型。

 


9、字符串数据的 replace 方法、find 方法、isdigit 方法

replace方法(不会改变原string的内容):

msg="Hello Hello I'm Jay"
# msg2=msg.replace("Hello","Hi")
msg2=str.replace(msg,"Hello","Hi")
print(msg2)
data="1,2,3,4"
data1=data.replace(",","\n",3)
print(data1)

替换最后一次出现的Hello 

msg="Hello Hello !Hello i'm Jay"
ind=msg.rfind("Hello")
print(ind)
msg2=msg[:ind]+msg[ind:].replace("Hello","Hi")
print(msg2)

 


 maketrans和translate

trantable=str.maketrans(in,out) 将in转换成out

msg2=msg.translate(trantable)

msg = "Hello world! Hello Python!"
# intab中的字符与outtab中的字符一一对应
intab = "aeiou"
outtab = "12345"
trantable=str.maketrans(intab,outtab)#将intab 换成 outtab
msg2=msg.translate(trantable)
print(msg2)
#H2ll4 w4rld! H2ll4 Pyth4n!

re.sub替换

import remsg = "Hello world! Hello Python!"
# 设置要替换的字符
namesRegex = re.compile(r'Hello')
# 用'Hi'替换msg中已经设置好要替换的字符
msg2=namesRegex.sub('Hi', msg)
print(msg2)
# 输出
# 'Hi world! Hi Python!'

 Python字符串替换的3种方法


find函数

string.find( str, start, end)  

如果是负数,就是从右边第几个数开始找

find找不到返回-1,index找不到报错

Python find()函数使用详解_find函数 


isdigit() 判断是否由数字构成

注意:负数的情况!从[1:]开始

Python 内置函数isdigit()



10、列表的insert、append

insert方法:直接修改原来的值

list.insert(index, element)

Python列表中的insert功能及用法举例


列表append函数

在列表中,append函数用于向列表的末尾添加一个元素。例如:

my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # [1, 2, 3, 4]

 需要注意的是,append函数只能添加一个元素,如果要添加多个元素,可以使用extend函数或者使用加号运算符

my_list = [1, 2, 3]
my_list.extend([4, 5])
print(my_list) # [1, 2, 3, 4, 5]my_list = [1, 2, 3]
my_list += [4, 5]
print(my_list) # [1, 2, 3, 4, 5]

 

集合add函数

在集合中,append函数并不存在。如果要向集合中添加元素,可以使用add函数

my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # {1, 2, 3, 4}

需要注意的是,集合中的元素是无序且不重复的。如果要添加多个元素,可以使用update函数

my_set = {1, 2, 3}
my_set.update([3, 4])
print(my_set) # {1, 2, 3, 4}

 

字典下标运算符

在字典中,也不存在append函数。如果要向字典中添加键值对,可以直接使用下标运算符

my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3
print(my_dict) # {'a': 1, 'b': 2, 'c': 3}


11、列表对象的浅复制与深复制

Python 深拷贝和浅拷贝详解_python深浅拷贝-CSDN博客

12、正则表达式以及 re.findall

python正则表达式re模块之findall函数_re.findall-CSDN博客

Python re.findall中正则表达式(.*?)和参数re.S使用_re.findall()用法 re.s-CSDN博客


13、包含语句的函数可以用来创建生成器

yield语句与return语句的作用相似,都是用来从函数中返回值。与return语句不同的是,
return语句一旦执行会立刻结束函数的运行,而每次执行到yield语句并返回一个值之
后会暂停或挂起后面代码的执行,下次通过生成器对象的__next__()方法、内置函数
next()、for循环遍历生成器对象元素
或其他方式显式“索要”数据时恢复执行。

python之生成器_python 生成器-CSDN博客 

14、函数中 continue 的作用

在Python中,continue语句用于控制循环(如for循环或while循环)的流程。当在循环体内部遇到continue语句时,它将跳过当前迭代中的剩余代码,并立即开始下一次迭代。这意味着循环不会终止,而是继续执行,但是会跳过当前迭代中continue语句之后的任何代码。


15、列表的切片操作

Python 深拷贝和浅拷贝详解_python深浅拷贝-CSDN博客


16、面向对象的三大特征

Python面向对象三大特征_python变量对象三大特征-CSDN博客



大题:


1、考察选择与循环,例如教材的第 81 页习题 9。

def k(x):if x < 0 or x >= 20:y = 0elif x >= 0 and x < 5:y = xelif x >= 5 and x < 10:y = 3 * x - 5else:y = 0.5 * x - 2return y
x=3
print(k(19))


2、考察设计函数并且调用函数,例如教材第 126 页例题 5-2.

def demo(*p):avg=sum(p)/len(p)g=[i for i in p if i>avg]return (avg,)+tuple(g)
list1=[1,2,3,4,5,6,7,8,9]
print(demo(*list1))#第一个数是平均数,第二个数大于平均数


3、考察面向对象程序设计,能够独立实现一个数据类型,例如第 157 页习题5

class Vecter3:def __init__(self,x = 0,y = 0,z = 0):self.X=xself.Y=yself.Z=zdef add(self, n):r = Vecter3()r.X=self.X+n.Xr.Y=self.Y+n.Yr.Z=self.Z+n.Zreturn rdef __add__(self,n):r=Vecter3()r.X=self.X+n.Xr.Y=self.Y+n.Yr.Z=self.Z+n.Zreturn rdef __sub__(self,n):r=Vecter3()r.X=self.X-n.Xr.Y=self.Y-n.Yr.Z=self.Z-n.Zreturn rdef __mul__(self,n):r=Vecter3(0)r.X = self.X * nr.Y = self.Y * nr.Z = self.Z * nreturn rdef __truediv__(self,n):r=Vecter3()r.X=self.X/nr.Y=self.Y/nr.Z=self.Z/nreturn rdef __floordiv__(self,n):r=Vecter3(0,0,0)r.X=self.X//nr.Y=self.Y//nr.Z=self.Z//nreturn rdef show(self):print((self.X,self.Y,self.Z))
def main():v1 = Vecter3(1,2,3)v2 = Vecter3(3,4,5)v3 = v1 + v2v3.show()v3 = v1.add(v2)v3.show()v4 = v1 - v2v4.show()v5 = v1 * 3v5.show()v6 = v2/2v6.show()v7 = v2//2v7.show()
main()


4、考察面向对象程序设计,能够按要求设计类,并且通过类的单继承产生派生

编程题 4: 员工类与经理类

设计一个Employee类,包含namesalary属性和introduce方法。然后设计一个Manager类,继承自Employee类,并添加一个give_bonus方法用于给员工发放奖金。

class Employee:  def __init__(self, name, salary):  self.name = name  self.salary = salary  def introduce(self):  print(f"Hello, I'm {self.name} and I earn {self.salary} per month.")  class Manager(Employee):  def __init__(self, name, salary, bonus):  super().__init__(name, salary)  self.bonus = bonus  def give_bonus(self, employee, amount):  employee.salary += amount  print(f"{self.name} gives {amount} to {employee.name}.")  # 示例使用  
manager = Manager("John Doe", 5000, 1000)  
employee = Employee("Jane Smith", 3000)  
manager.give_bonus(employee, 500)  
employee.introduce()

编程题 5: 账户类与储蓄账户类

设计一个Account类,包含balance属性和depositwithdraw两个方法。然后设计一个SavingsAccount类,继承自Account类,并添加一个calculate_interest方法用于计算利息。

class Account:  def __init__(self, balance=0):  self.balance = balance  def deposit(self, amount):  self.balance += amount  print(f"Deposited {amount}. New balance is {self.balance}.")  def withdraw(self, amount):  if amount > self.balance:  print("Insufficient funds.")  return  self.balance -= amount  print(f"Withdrawn {amount}. New balance is {self.balance}.")  class SavingsAccount(Account):  def __init__(self, balance=0, interest_rate=0.01):  super().__init__(balance)  self.interest_rate = interest_

 

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

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

相关文章

代码随想录算法训练营第二十三天

题目&#xff1a;39. 组合总和 这道题目和组合差不多 集合里元素可以用无数次&#xff0c;那么和组合问题的差别 其实仅在于 startIndex上的控制 还有就是重复的如何进行剔除的方法如何实现 其实出现这个问题是因为没有理解startIndex的作用 详细看视频的 4分钟开始的地方…

嵌入式单片机产品微波炉拆解分享

在厨房电器中,微波炉可以说是最具技术含量的电器,它的工作原理不像其他电器那样一眼就能看个明白,于是拆解了一个微波炉,分析内部电路。 微波炉的结构 微波炉由箱体、磁控管、变压器、高压电容器、高压二极管、散热风扇、转盘装置及一系列控制保护开关组成,大多数微波炉还…

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/ &#x1f4dc; 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 &#x1f914;2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案&#x1f6e0;️3.1 …

展会邀请 | 龙智即将亮相2024上海国际嵌入式展,带来安全合规、单一可信数据源、可追溯、高效协同的嵌入式开发解决方案

2024年6月12日至14日&#xff0c;备受全球嵌入式系统产业和社群瞩目的2024上海国际嵌入式展&#xff08;embedded world china 2024&#xff09;即将盛大开幕&#xff0c;龙智将携行业领先的嵌入式开发解决方案亮相 640展位 。 此次参展&#xff0c;龙智将全面展示专为嵌入式行…

csdn上传图片失败解决办法

今天下午写笔记&#xff0c;上传图片的时候总是出现图片上传不成功。查询了下解决方案&#xff1a; C:\Windows\System32\drivers\etc &#xff0c;使用管理员打开hosts文件加入&#xff1a; 49.7.22.7 csdn-img-blog.oss-cn-beijing.aliyuncs.com保存之后&#xff0c;&#x…

csrf与xss差别 别在弄乱了 直接靶场实操pikachu的csrf题 token绕过可以吗???

我们现在来说说这2个之间的关系&#xff0c;因为昨天的我也没有弄清楚这2者的关系&#xff0c;总感觉迷迷糊糊的。 xss这个漏洞是大家并不怎么陌生&#xff0c;导致xss漏洞的产生是服务器没有对用户提交数据过滤不严格&#xff0c;导致浏览器把用户输入的当作js代码返回客户端…

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现LSTM-ABKDE长…

345_C++_共享缓冲区管理类shared_buffer

class shared_buffer{friend class weak_buffer;boost::shared_ptr<const void> _data;size_t _size;template <typename T>struct null_deleter

centos7安装字体

1.安装命令 yum install fontconfig #字体库命令 yum install mkfontscale #更新字体命令2.安装字体&#xff08;注意权限问题&#xff09; 进入目录 /usr/share/fonts &#xff0c;该目录是 centos7 字体库的默认安装目录。在该目录下创建一个文件夹 ekp &#xff08;名字…

基于NodeJs 的Vue安装和创建项目

基于NodeJs 的Vue安装和创建项目 一、Node.js的下载与安装 下载地址&#xff1a; https://nodejs.org/en/download/prebuilt-installer 安装完之后&#xff0c;启动 cmd命令行&#xff0c;验证 Node.js 是否安装成功 二、配置npm的全局模块的存放路径以及缓存的路径 注&…

Junit 单元测试 详解,包你掌握

Java单元测试----Junit详解 1 什么是 Junit JUnit 是一个广泛使用的 Java 单元测试框架。它用于编写和运行可重复的测试&#xff0c;以验证 Java 程序的行为是否符合预期 也许有人会好奇&#xff0c;之前学的 Selenium 和 Junit 有什么关系&#xff1f;答案就是没关系&#…

debian12安装时分区方案

一、初次尝试 一共设置了4个分区&#xff0c;其中根目录/分区46G&#xff0c;swap分区10G&#xff08;电脑内存为6G&#xff09;&#xff0c;/boot分区200M&#xff0c;/home分区55G。系统安装之后的实际占有情况为&#xff1a; 二、调整后情况 一共设置了4个分区&#xff0c…

Web前端博客论坛:构建、运营与用户体验的深度解析

Web前端博客论坛&#xff1a;构建、运营与用户体验的深度解析 在数字化浪潮的推动下&#xff0c;Web前端博客论坛成为了广大开发者交流技术、分享经验的重要平台。如何构建一个功能齐全、运营有序的博客论坛&#xff0c;以及如何提升用户体验&#xff0c;是摆在每一位前端开发…

Linux系统操作命令与docker操作命令

Linux系统操作命令 一、文件管理 ls&#xff1a;列出当前目录下的文件和文件夹。 ls -l&#xff1a;以详细列表的形式显示文件的权限、所有者和大小等信息。 cd&#xff1a;切换当前目录。 cd ..&#xff1a;返回上一级目录。cd /&#xff1a;返回根目录。 pwd&#xff1a;显示…

基于Simulink的双端行波测距

1 输电线路故障仿真模型 基于双端行波测距理论&#xff0c;在MATLAB软件中搭建的三相50Hz的输电线路故障仿真模型如图1所示&#xff0c;该模型包含了三相电源、输电线路、故障发生器和示波器模块等。主要仿真参数设置如下:仿真时间为 0~0.1s,采用固定步长 10-7和ode3 算法&…

【手推公式】如何求SDE的解(附录B)

【手推公式】如何求SDE的解&#xff08;附录B&#xff09; 核心思路&#xff1a;不直接求VE和VP的SDE的解xt&#xff0c;而是求xt的期望和方差&#xff0c;从而写出x0到xt的条件分布形式&#xff08;附录B&#xff09; 论文&#xff1a;Score-Based Generative Modeling throug…

LangChain4j实战

基础 LangChain4j模型适配: Provider Native Image Sync Completion Streaming Completion Embedding Image Generation Scoring Function Calling OpenAI ✅ ✅ ✅ ✅ ✅ ✅ Azure OpenAI ✅ ✅ ✅ ✅ ✅ Hugging Face ✅ ✅ Amazon Bedrock ✅ ✅…

Functional ALV系列 (09) - 双击跳转到另外一个ALV

在查看数据的时候&#xff0c;不总是只有一个界面&#xff0c;为了让用户更方便地查看数据&#xff0c;需要根据当前的数据跳转到另外的界面中&#xff0c;比如查看明细等。本文演示 ALV 比较实用的功能&#xff1a;双击 ALV 单元格跳转到另外一个 ALV 中。 要实现的业务场景&…

使用爬蟲動態IP代理優化數據抓取

無論是商業分析、市場調研&#xff0c;還是學術研究&#xff0c;數據的獲取和處理都顯得尤為重要。爬蟲是一種自動化程式&#xff0c;用於在互聯網上抓取大量數據。簡單來說&#xff0c;爬蟲會模擬用戶的流覽行為&#xff0c;自動訪問網頁並提取其中的有用資訊。但頻繁的訪問和…

CTFHUB-技能树-web-信息泄露

目录 1.目录遍历 2.PHPINFO 3.备份文件下载 3.1 网站源码 3.2 bak文件 3.3 vim缓存 3.4 .DS_Store 4.Git泄露 4.1 Log 4.2 Stash 4.3 Index 5.SVN泄露 6.HG泄露 1.目录遍历 这个没什么好讲的&#xff0c;进去直接点击找flag,然后在下面目录翻&#xff0c;就找到了 …