【Python】基础知识(函数与数据容器)

笔者在C语言基础上学习python自用笔记

熟练使用python

type() 返回数据类型

name = "root"
hei = 1.8
wei = 77
type_hei = type(hei)
type_wei = type(wei)
print(type(name))
print(type_hei)
print(type_wei)

在python中变量是没有类型的,它存储的数据是有类型的。

数据类型转换:Python 笔记 — 数据类型转换

字符串

字符串三种定义方式:

  1. 单引号
  2. 双引号
  3. 三引号:三引号的写法和多行注释一样,如果把它赋给一个变量接收,那它就是字符串

引号的嵌套

#单引号内可以写双引号
name = '"root"'
print(name)
#双引号内可以写单引号
name = "'root'"
print(name)
#使用\来转义
name = "\"root\""
print(name)
name = '\'root\''
print(name)

字符串拼接

name = "root"
num = 1729
print("my name is "+ name + ",do you know me?"+ str(num) + " is an interesting number.")

字符串格式化

类似于C语言

hei = 1.8
wei = 77
print("my height is %s,my weight is %s" % (hei , wei) )
#这里是将浮点型和整型转为了字符型,当然你也可以这样写
print("my height is %f,my weight is %d" % (hei , wei) )

数字精度控制

使用m.n来控制数据的宽度和精度

  • m,控制宽度,设置的宽度小于数字自身,不生效
  • n,控制小数点精度,会进行小数的四舍五入

示例:

  • %5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格] [空格] [空格] 11,用三个空格补足宽度
  • %5.2f:表示将宽度控制为5,将小数点精度设置为2;小数点和小数部分也算入宽度计算。如:对11.345设置了%7.2f后,结果是:[空格] [空格] 11.35,2个空格补足宽度,小数部分限制2位精度后,四舍五入为.35
  • %.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35

格式化快速写法:f"内容{变量}"

name = "root"
hei = 1.8
wei = 77
print(f"my name is {name},my height is {hei},my weight is {wei}.")
#不做精度控制

输入

print("请告诉我你是谁?")
name = input()
print("我知道了,你是%s" % (name))
#可以直接这样写:
name = input("请告诉我你是谁?")
print("我知道了,你是%s" % (name))

input默认把输入的数据视为字符串类型

判断

age = 25
#age = 15
print(f"已经{age}岁了")
if age>=18 :print("成年了")print("该扛起重担了")
else:print("珍惜时光吧")
print("时间过得真快")

注意缩进,不同的缩进处于不同的级下;根据age的不同观察结果的不同

if_elif_else

score=70
if score>=80 :print("优秀")
elif score>=60 :print("及格")
else :print("不及格")

循环

while

i = 0
while i<5:print("machine")i+=1

for

格式:

for 临时变量 in 待处理数据集:循环满足条件时执行的代码

实例:

name = "root"
for x in name:print(x)

待处理数据集严格来说称之为序列类型(其内容可以一个个依次取出的一种类型)包括字符串、列表、元组等。

range

range(num):获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是:[0,1,2,3,4]

range(num1,num2):获取一个从num1开始,到num2结束的数字序列(不含num2本身)
如range(5,10)取得的数据是:[5,6,7,8,9]

range(num1,num2,step):获取一个从num1开始,到num2结束的数字序列(不含num2本身),数字之间的步长为step
如range(5,10,2)取得的数据是:[5,7,9]

for x in range(0,20,3):print(x)

函数

定义:

def 函数名(传入参数):函数体return 返回值

字面量None 类型:<class ‘NoneType’>

无返回值的函数,实际上就是返回了None这个字面量

None可用于if判断,相当于false

def check_age(age):if age >= 18:return "SUCCESS"else:return None
result = check_age(16)
if not result:print("不能进入!")

None可用于声明无初始内容的变量

name = None

函数的说明文档:在def语句的下面进行多行注释会自动生成

使用global关键字可以在函数内部声明变量为全局变量

num = 100
def testA():print(num)def testB():#global numnum = 200print(num)testA()
testB()
print(num)

如果一个函数要有多个返回值,该如何书写代码?

按照返回值的顺序,写对应顺序的多个变量接收即可

变量之间用逗号隔开

支持不同类型的数据return

def test_return():return 1,2
x,y = test_return()
print(x) #输出1
print(y) #输出2

函数参数种类

位置参数:调用函数时根据函数定义的参数位置来传递参数

def user_info(name,age,gender):print(f"您的名字是{name},年龄是{age},性别是{gender}")
user_info('root',25,'女')

注意:传递的参数和定义的参数的顺序及个数必须一致

关键字参数:调用函数时通过“键=值”的形式传递参数

作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

def user_info(name,age,gender):print(f"您的名字是{name},年龄是{age},性别是{gender}")
user_info(age=25,gender="女",name="root")
#可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("root",age=25,gender="女")

缺省参数:也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值

注意:所有位置参数必须出现在默认参数前,包括函数定义和调用

作用:当调用函数时没有传递参数,就会使用默认是缺省参数对应的值

def user_info(name,age,gender="男"):print(f"您的名字是{name},年龄是{age},性别是{gender}")
user_info("root",25)
user_info("root",25,"女")

不定长参数:也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景

作用:当调用函数时不确定参数个数,可以使用不定长参数

类型:1.位置传递 2.关键字传递

1.位置传递

def user_info(*info):print(info)
user_info("root")
user_info("root",25,"女")

输出结果:

('root',)
('root', 25, '女')

参数可以传任意个,传进的所有参数都会被info变量收集,它会根据传进参数的位置合并为一个元组

2.关键字传递

传递的参数为“键=值”的形式,会合并为一个字典

def user_info(**info):print(info)
user_info(name="root")
user_info(name="root",age=25,gender="女")

输出结果:

{'name': 'root'}
{'name': 'root', 'age': 25, 'gender': '女'}

函数作为参数传递

def test_func(compute):result = compute(1,2)print(type(compute))print(result)
def compute(x,y):return x+y
test_func(compute)

输出结果:

<class 'function'>
3

lambda匿名函数

  • def关键字,可以定义带有名称的函数

  • lambda关键字,可以定义匿名函数(无名称)

  • 有名称的函数,可以基于名称重复使用

  • 无名称的匿名函数,只可临时使用一次

定义语法:lambda 传入参数: 函数体(一行代码)

上述代码可以写成

def test_func(compute):result = compute(1,2)print(type(compute))print(result)
test_func(lambda x,y:x+y)

数据容器

列表(list)

列表的定义

name_list = ["C++","Python","Java"]
print(name_list)
print(type(name_list))
#列表存储的数据类型可以不一样
#嵌套列表:
my_list = [["root",1.8,77],["嵌套",[1729,3.14]]]
print(my_list)

列表的下标索引

name_list = ["C++","Python","Java"]
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])
my_list = [["root",1.8,77],["嵌套",[1729,3.14]]]
print(my_list[0][1])
print(my_list[1][0])
print(my_list[1][1][1])

输出结果:

C++
Python
Java
Java
Python
C++
1.8
嵌套
3.14

列表的方法

列表.index(元素)

查找指定元素在列表的下标,如果找不到,报错ValueError

name_list = ["C++","Python","Java"]
print(name_list.index("C++"))
#print(name_list.index("php"))

列表[下标]=值

重新赋值

name_list = ["C++","Python","Java"]
name_list[0]="php"
print(name_list)

列表.insert(下标,元素)

在指定的下标位置插入指定的元素

name_list = ["C++","Python","Java"]
name_list.insert(1,"php")
print(name_list)

列表.append(元素)

将指定元素追加到列表的尾部

name_list = ["C++","Python","Java"]
name_list.append("php")
print(name_list)

列表.extend(其他数据容器)

将其他数据容器的内容取出,依次追加到列表尾部

name_list = ["刘备","关羽","张飞"]
name_list.extend(["诸葛亮","赵云","马超"])
print(name_list)

删除元素

  • del 列表[下标]
  • 列表.pop(下标)
name_list = ["刘备","关羽","张飞","诸葛亮","赵云","马超"]
del name_list[5]
print(name_list)
element = name_list.pop(4)
print(element)
print(name_list)

列表.remove(元素)

删除某元素在列表中的第一个匹配项

name_list = ["刘备","关羽","张飞","诸葛亮","张飞","马超"]
name_list.remove("张飞")
print(name_list)

列表.clear()

清空列表

name_list = ["刘备","关羽","张飞"]
name_list.clear()
print(name_list)

列表.count(元素)

统计某元素在列表内的数量

name_list = ["刘备","关羽","张飞","诸葛亮","张飞","马超"]
print(name_list.count("张飞"))

len(容器)

统计容器内有多少元素

name_list = ["刘备","关羽","张飞","诸葛亮","张飞","马超"]
print(len(name_list))

列表的遍历

while

index = 0
name_list = ["刘备","关羽","张飞","诸葛亮","张飞","马超"]
while index < len(name_list) :print(name_list[index])index += 1

for

name_list = ["刘备","关羽","张飞","诸葛亮","张飞","马超"]
for element in name_list:print(element)

元组(tuple)

元组的定义

元组在定义之后不可更改数据,可以理解为只读的list

比如,我们想存储桃园三结义的人物,肯定就是下面这三个;我们不希望它能被更改,改成”刘备、孙权、曹操“就不好了。这时候就要用到元组(tuple)

name_tuple = ("刘备","关羽","张飞")
print(type(name_tuple))
print(f"桃园三结义的是{name_tuple}")
#定义空元组
t1 = ()
t2 = tuple()
#元组只有一个数据时,这个数据后面要添加逗号
t3 = ('only',)
#嵌套元组:
three_country = (("曹操","曹丕","曹冲"),("刘备","刘禅"),("孙坚","孙策","孙权"))
print(three_country)
print(three_country[1][1])

元组内存储列表时,列表的内容可以改变

t4 = (1729,3.14,["root","smile"])
t4[2][1] = "cry"
print(t4)

方法等参照列表

字符串(str)

  • 字符串支持下标索引
  • 字符串不能被修改

字符串.replace(字符串1,字符串2)

将字符串内的全部“字符串1”替换为“字符串2”

注意:并非修改字符串本身,而是得到了一个新的字符串

str1 = "happy sad scared mad"
print(str1.index("sad"))
str2 = str1.replace("ad","da")
print(str1)
print(str2)

输出结果:

6
happy sad scared mad
happy sda scared mda

字符串.split(分隔符字符串)

按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中

注意:字符串本身不变,而是得到了一个列表对象

str3 = "apple,banana,pear,peach,mango"
list_str3 = str3.split(",")
print(str3)
print(list_str3)

输出结果:

apple,banana,pear,peach,mango
['apple', 'banana', 'pear', 'peach', 'mango']

字符串的规整操作

  • 字符串.strip():去前后空格
  • 字符串.strip(字符串):去前后指定字符串
str4 = " I have never let my schooling interfere with my education. "
str4_c = str4.strip()
str5 = "12I have never let my schooling interfere with my education.21"
str5_c = str5.strip("12")
#并非完全按照"12",而是满足其子串"1""2"就会去除
print(str4)
print(str4_c)
print(str5)
print(str5_c)

输出结果:

 I have never let my schooling interfere with my education. 
I have never let my schooling interfere with my education.
12I have never let my schooling interfere with my education.21
I have never let my schooling interfere with my education.

序列

序列是指:内容连续、有序,可使用下标索引的一类数据容器

列表、元组、字符串,均可以视为序列

切片:从一个序列中,取出一个子序列

语法:序列[起始下标:结束下标:步长]

表示从序列中的指定位置开始,依次取出元素,到指定位置结束,得到一个新序列

起始下标表示从何处开始,可以留空,留空视作从头开始

结束下标表示何处结束(不包含此下标),可以留空,留空视作截取到结尾

步长表示依次取出元素的间隔

  • 步长1表示,一个个取元素(可以省略)
  • 步长2表示,每次跳过1个元素取
  • 步长N表示,每次跳过N-1个元素取
  • 步长为负数表示,反向取(注意,起始和结束下标也要反向标记)

切片的操作并不会影响序列本身,而是会得到一个新的序列

my_list = ["a",1,2,3,3.14]
qie_list = my_list[1:4]
my_tuple = (4,5,6,7,8)
qie_tuple = my_tuple[:]
my_str = "lexicographer"
qie_str = my_str[-1:-10:-3]
print(qie_list)
print(qie_tuple)
print(qie_str)

输出结果:

[1, 2, 3]
(4, 5, 6, 7, 8)
rpg

集合(set)

集合的定义

set1 = set() #定义空集合
set1 = {"C++","Java","Python","C++","Java"}
print(set1)
print(type(set1))

输出结果:

{'C++', 'Java', 'Python'}
<class 'set'>
  • 集合是无序的,所以不支持下标索引访问
  • 集合是允许修改的

集合的操作

set1 = {"C++","Java","Python","C++","Java"}
#添加新元素
set1.add("php")
set1.add("C++")
print(set1) #输出结果:{'Python', 'Java', 'C++', 'php'}
#移除元素
set1.remove("Java")
print(set1) #输出结果:{'C++', 'Python', 'php'}
#随机取出一个元素
element = set1.pop()
print(element)
print(set1)
print(len(set1))
#清空集合
set1.clear()
print(set1) #输出结果:set()

集合1.difference(集合2)

取出集合1和集合2的差集(集合1有而集合2没有的),得到一个新集合,集合1和2不变

set1 = {1,2,3,4}
set2 = {3,4,5,6}
set3 = set1.difference(set2)
print(set1)
print(set2)
print(set3)

输出结果:

{1, 2, 3, 4}
{3, 4, 5, 6}
{1, 2}

集合1.difference_update(集合2)

在集合1内,删除和集合2相同的元素;集合1被修改,集合2不变

set1 = {1,2,3,4}
set2 = {3,4,5,6}
set1.difference_update(set2)
print(set1)
print(set2)

输出结果:

{1, 2}
{3, 4, 5, 6}

集合1.union(集合2)

将集合1和集合2组成新集合;得到新集合,集合1和2不变

set1 = {1,2,3,4}
set2 = {3,4,5,6}
set3 = set1.union(set2)
print(set1)
print(set2)
print(set3)

输出结果:

{1, 2, 3, 4}
{3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}

集合的遍历

因为集合不支持下标索引,所以不能用while循环

set1 = {1,2,3,4}
for element in set1:print(element)

字典(dict)

字典的定义

字典的定义同样使用{},不过存储的元素是一个个的“键值对”(key : value)

dict1 = {} #定义空字典
#也可以这样:dict1 = dict()
print(dict1)
dict1 = {"李雷":88,"韩梅梅":90,"李华":99}
print(dict1)
print(type(dict1))

输出结果:

{}
{'李雷': 88, '韩梅梅': 90, '李华': 99}
<class 'dict'>

字典的key是不可以重复的

dict1 = {"李雷":88,"韩梅梅":90,"李华":99,"韩梅梅":95}
print(dict1)

输出结果:

{'李雷': 88, '韩梅梅': 95, '李华': 99}

字典也不可以使用下标索引,但可以通过key值来取得对应的value

dict1 = {"李雷":88,"韩梅梅":90,"李华":99}
print(dict1["李华"]) #输出结果:99

字典的key和value可以是任意数据类型(key不可为字典)

字典的嵌套

嵌套字典

代码示例:

score = {"王力鸿": {"语文":77,"数学":66,"英语":33},"周杰轮": {"语文":88,"数学":86,"英语":55},"林俊节": {"语文":99,"数学":96,"英语":66}
}
print(score)
print(score["周杰轮"])
print(score["林俊节"]["数学"])

输出结果:

{'王力鸿': {'语文': 77, '数学': 66, '英语': 33}, '周杰轮': {'语文': 88, '数学': 86, '英语': 55}, '林俊节': {'语文': 99, '数学': 96, '英语': 66}}
{'语文': 88, '数学': 86, '英语': 55}
96

字典的操作

字典[key]=value

  • key存在,即修改了value
  • key不存在,即新增了元素
poem = {"李白":"诗仙","杜甫":"诗圣","李贺":"诗鬼","白居易":"诗魔"
}
poem["王维"] = "诗佛"
print(poem)
poem["李白"] = "天生我材必有用,千金散尽还复来"
print(poem)

输出结果:

{'李白': '诗仙', '杜甫': '诗圣', '李贺': '诗鬼', '白居易': '诗魔', '王维': '诗佛'}
{'李白': '天生我材必有用,千金散尽还复来', '杜甫': '诗圣', '李贺': '诗鬼', '白居易': '诗魔', '王维': '诗佛'}

字典.pop(key):获得指定key的value,同时字典被修改,指定key的数据被删除

字典.clear():清空字典

字典.keys():返回字典中的全部key

我们可以用获取到的key对字典进行遍历

也可以直接对字典进行遍历,每一次循环都是直接得到key

代码实例:

price = {"铅笔":"1块","橡皮":"5毛","笔袋":"9块9包邮","衬衫":"9镑15便士"
}
keys = price.keys()
print(keys)
for key in keys:print(f"{key}:{price[key]}")
'''直接遍历
for key in price:print(f"{key}:{price[key]}")
'''
price_shirt = price.pop("衬衫")
print(price_shirt)
print(price)
print(len(price))
price.clear()
print(price)

输出结果:

dict_keys(['铅笔', '橡皮', '笔袋', '衬衫'])
铅笔:1块
橡皮:5毛
笔袋:9块9包邮
衬衫:9镑15便士
9镑15便士
{'铅笔': '1块', '橡皮': '5毛', '笔袋': '9块9包邮'}
3
{}

总结

各类数据容器的特点

总结

基于各类数据容器的特点,它们的应用场景如下:

  • 列表:一批数据,可修改、可重复的存储场景
  • 元组:一批数据,不可修改、可重复的存储场景
  • 字符串:一串字符串的存储场景
  • 集合:一批数据,去重存储场景
  • 字典:一批数据,可用key检索value的存储场景

数据容器通用方法

  • len(容器):统计容器的元素个数
  • max(容器):统计容器的最大元素
  • min(容器):统计容器的最小元素
  • list(容器):将给定容器转换为列表
  • tuple(容器):将给定容器转换为元组
  • str(容器):将给定容器转换为字符串
  • set(容器):将给定容器转换为集合
  • sorted(容器):对容器进行排序(升序),结果返回列表对象
  • sorted(容器,reverse=True):对容器进行排序(降序),升序的reverse默认=False

数据容器类型互转:

  1. 对应括号的改变
  2. 字符串的每个字符会被单独拿出来作为元素
  3. 转集合会具有集合的特点:数据无序、不重复
  4. 字典转成字符串会保留value,转成其他类型不保留

当然,动动小手敲敲代码会更好地理解

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何删除“上传到移动云盘”右键菜单

问题表现 如题&#xff0c;“上传到移动云盘”的右键菜单非常难删除&#xff0c;按照网上的右键菜单注册表删除通用教程也没找到 解决方法 实际上&#xff0c;该菜单的位置在注册表中的 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\就是删除里…

Kafka 可视化管理工具 CMAK 启动错误 -- 命令行太长 问题解决

一、安装环境描述&#xff1a; Kafka版本&#xff1a;kafka_2.13-2.8.1cmak 版本&#xff1a;cmak-3.0.0.6安装环境&#xff1a;windows 11 二、问题描述 当我们在 命令行启动 cmak.bat 命令时&#xff0c;会报如下错误&#xff1a; 命令行太长三、解决办法 修改 cmak.bat…

CUDA线程管理

核函数在主机端启动时&#xff0c;执行会转移到设备上&#xff0c;并且将控制权转移回主机。当核函数在GPU上运行时&#xff0c;主机可以运行其他函数。因此&#xff0c;主机与核函数是异步的。 此时&#xff0c;设备端也就是GPU上会产生大量的线程&#xff0c;并且每个线程都…

世界读书日|看看阿里内部的技术大牛们推荐了什么书?

AI 时代&#xff0c;技术呈指数级发展&#xff0c;我们越来越关注&#xff0c;如何持续学习提升&#xff0c;跟上时代的步伐。 刚好借着世界读书日的契机&#xff0c;我们邀请了阿里内部的技术大牛们&#xff0c;分享他们在 AI 时代持续学习的过程中&#xff0c;推荐的一些内容…

黄金行情下跌有投资机会吗?

尽管黄金价格的波动常常引起投资者的高度关注&#xff0c;但行情的下跌未必只是警讯&#xff0c;亦可能蕴藏着某些难得的投资机会。总之&#xff0c;答案是肯定的——在黄金行情下跌时&#xff0c;依旧有适宜的投资机会&#xff0c;只是这需要投资者具备相应的应对知识和策略。…

Msfvenom生成木马实验

E025-渗透测试常用工具-使用msfvenom生成木马进行渗透测试 第一步&#xff0c;打开网络拓扑&#xff0c;点击启动选项&#xff0c;启动实验虚拟机 第二步&#xff0c;使用ifconfig和ipconfig命令分别获取渗透机和靶机的IP地址&#xff0c;使用ping命令进行网络连通性测试&…

关于Java的三个小题目(很容易错!)

第一题 char运算后的数据类型 最后输出的是什么类型&#xff1f; 答案&#xff1a;int char与byte的联系和区别 char是无符号型的&#xff0c;能够表示一个整数&#xff0c;不能表示负数&#xff08;0~65535&#xff09;&#xff1b;而byte是有符号型的&#xff0c;能够表示…

航空业微服务架构中台的构建与实践

随着航空业的快速发展&#xff0c;航空公司需要面对更加复杂的业务环境和客户需求。在这样的背景下&#xff0c;构建一个稳健、高效的微服务架构中台成为了航空公司的当务之急。本文将探讨航空业微服务架构中台的设计理念、关键技术以及实践经验&#xff0c;帮助航空公司构建具…

Jina Reranker 新模型发布,更小、更快、更便宜!

在传统文本搜索技术已经相对成熟的背景下&#xff0c;如何进一步提高搜索的效率和速度成为了新的追求目标。应对这一挑战&#xff0c;Jina Reranker 模型系列推出了两款针对性能调优的新模型&#xff1a;jina-reranker-v1-turbo-en 和 jina-reranker-v1-tiny-en&#xff0c;它们…

矽塔SA6288Q栅极驱动器,可替代峰绍FD6288Q

SA6288 是一款集成了三个独立半桥栅极驱动器&#xff0c;特别适合于三相电机应用中高速功率MOSFET 和 IGBT 的栅极驱动。可在高达250V 电压下工作。 SA6288内置 VCC 和 VBS 欠压&#xff08; UVLO &#xff09;保护功能&#xff0c;防止功率管在过低的电压下工作&#xff0c;…

赛劲SEJINIGB零背隙滚轮齿条齿圈产品助力高精度运动平台

在高度精密化的工业时代&#xff0c;传统齿轮齿条系统所面临的背隙、摩擦粉尘、润滑等问题愈发凸显&#xff0c;这些问题不仅限制了设备的精度和稳定性&#xff0c;还对生产效率和产品质量造成严重影响。为此&#xff0c;赛劲SEJINIGB经过长期研发和技术积累&#xff0c;推出了…

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 &#xff08;1&#xff09;系统具备用户管理功能&#xff0c;包括用户注册、登录、权限管理等功能。 &#xff08;2&#xff09;系统具备格式规范管理功能&#xff0c;包括格式规范创建、编辑、删除等操…

两天速通阿里

感觉这一周太梦幻了&#xff0c;就像一个梦&#xff0c;很不真实~~~ 感觉这个暑期&#xff0c;我的运气占了99成&#xff0c;实力只有百分之一 4.15上午 腾讯csig 腾讯云部门&#xff0c;面完秒进入复试状态 4.16下午 美团优选供应链部门&#xff0c;4.18上午发二面 4.17晚上 阿…

2款摄像头录像软件,满足你的多种要求!

“有没有一款能够录制摄像头视频的软件呀&#xff1f;我计划录制一些生活小窍门和教学视频&#xff0c;想要能清楚地拍到自己的操作过程。但找了好多软件&#xff0c;都不太满意&#xff0c;真心希望大家能给我推荐几款好用的摄像头录像软件&#xff0c;最好能简单易上手的&…

vue2项目升级到vue3经历分享

依据vue官方文档&#xff0c;vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3&#xff0c;预计工作量有点大&#xff0c;于是想着把过程记录下来。 原系统使用的技术栈 "dependencies": {"axios": "^0.21.1","babel-…

js鼠标经过就增加一个open 进行展开 遍历数组,为每个id对应的元素添加事件监听器

js鼠标经过就增加一个open 进行展开 遍历数组&#xff0c;为每个id对应的元素添加事件监听器 {% javascript %}const ids [Details-HeaderMenu-aaaaaa2,Details-HeaderMenu-aaaaaa6, Details-HeaderMenu-aaaaaa4,Details-HeaderSubMenu-1,Details-HeaderSubMenu-2,Details-H…

python基础知识点(蓝桥杯python科目个人复习计划66)

今日复习内容&#xff1a;算法双周赛 第一题&#xff1a;疯狂星期六 题目描述&#xff1a; 麦肯鸡是一家名声在外的汉堡店&#xff0c;他们最近推出了一份名为vivo50的套餐&#xff0c;只需要在门口大声喊出vivo50&#xff0c;就可以获得这个套餐。 现在&#xff0c;请你打…

W801学习笔记十二:掌机进阶V3版本之驱动(PSRAM/SD卡)

本次升级添加了两个模块&#xff0c;现在要把他们驱动起来。 一&#xff1a;PSRAM 使用SDK自带的驱动&#xff0c;我们只需要写一个初始化函数&#xff0c;并在其中添加一些自检代码。 void psram_heap_init(){wm_psram_config(0);//实际使用的psram管脚选择0或者1&#xff…

程序员过了35岁没人要?“这行越老越香”

程序员35岁失业&#xff1f;参加完OceanBase开发者大会&#xff0c;我又悟了&#xff01; 周六参加了OceanBase2024 开发者大会的现场&#xff0c;来之前我其实挺忐忑的&#xff0c;我觉得一个数据库产品的发布会&#xff0c;能有什么新鲜的东西&#xff1f; 踏入酒店的那一刻&…

HORROR SYSTEM

HORROR SYSTEM是一个创新的工具包,允许开发者在Unity3D中创建独特的原创恐怖游戏。 HORROR SYSTEM是一款强大而灵活的工具,旨在基于Unity3D引擎创建沉浸式第三人称恐怖游戏。 这项资产易于使用且直观,可以让任何经验水平的开发人员将他们的想法付诸实践,创造出高质量、充满…