05 python数据容器

news2024/11/18 2:36:27

5.1 数据容器认识

5.2 python列表

5.2.1 列表的定义

'''
演示数据容器之:list
语法:[元素,元素,....]
'''

#定义一个列表List
List = ['itheima','uityu','gsdfg']
List1 = ['itheima','6666','True']
print(List)
print(List1)
print(type(List))
print(type(List1))

#定义嵌套列表
List2 = [[1,2,3],['dadd','dadad','fefefe']]
print(List2)
print(type(List2))

5.2.2 列表的下标索引

'''
通过下标索引取出对应位置的数据
'''


#定义列表
List = ['tom','python','lalal']

#列表[下标索引],从前向后从0开始,每次+1,   从后往前从-1开始,每次-1
print(List[0])
print(List[1])
print(List[-1])

#定义嵌套列表
List1 = [[1,2,3],[123,333,444]]
#取出嵌套索引的元素
print(List1[0][1])
print(List1[1][-2])

5.2.3 列表的常用操作方法

'''
演示数据容器之:List列表常用操作
'''

my_list = [11111,'num',['qqqqq',676767]]

#1.1 查找某元素在列表内的下标索引                           列表.index
index = my_list.index(['qqqqq',676767])
print(f'[qqqqq,676767]在列表中的下标索引是:{index}')

# 1.2如果查找的元素不存在,会报错
# index = my_list.index(0000)
# print(f'0000在列表中的下标索引是:{index}')

#2 修改特定下标索引的值
my_list[0] = 9999
print(f'列表被修改后的值是:{my_list}')

#3 在特定位置插入新元素                                    列表.insert
my_list.insert(1,777777)
print(f'列表插入元素后它的结果是:{my_list}')

#4 在元素列表中追加一个元素,在列表尾部加入新元素               列表.append
my_list.append('学python')
print(f'列表在追加元素后,结果是:{my_list}')

#5 在元素列表中追加一个新列表,在列表尾部加入新列表              列表.extend
my_list2 = [1,'best']
my_list.extend(my_list2)
print(f'列表在追加列表后,结果是:{my_list}')

#6 删除列表中的元素(两种方法)
my_list3 = [11111,'num',['qqqqq',676767]]
#6.1 del方法  列表[下标]
del my_list3[2][1]
print(f'del方法删除后的结果是{my_list3}')
#6.2 方法2: 列表.pop(下标)                                 列表.pop
my_list3 = [11111,'num',['qqqqq',676767]]
my_list3.pop(1)
print(f'列表.pop(下标)方法删除后的结果是{my_list3}')


#7  删除某元素在列表的第一个匹配项                             列表.remove
my_list4 = [11111,11111,111111,111111,'num','num','num',['qqqqq',676767]]
my_list4.remove('num')
my_list4.remove('num')
my_list4.remove('num')
print(f'通过remove方法移除元素后,列表的结果是:{my_list4}')

#8 清空列表                                                列表.clear
my_list4.clear()
print(f'列表被清空了,结果是:{my_list4}')

#9  统计列表内某元素的数量                                    列表.count
my_list5 = [11111,11111,111111,111111,'num','num','num',['qqqqq',676767]]
count = my_list5.count('num')
print(f'列表中num的数量为:{count}')

#统计列表中有多少元素                                         len(列表)
my_list6 = [11111,11111,111111,111111,'num','num','num',['qqqqq',676767]]
count = len(my_list6)
print(f'列表中的元素数量为:{count}')

5.2.4 列表的基础操作案例

age = [21,25,21,23,22,20]

#追加31到列表末尾
age.append(31)
print(age)

#追加新列表到列表尾部
age1 = [29,33,30]
age.extend(age1)
print(age)

#取出第一个元素
age.pop(0)
print(age)

#取出最后一个元素
del age[7]
print(age)

#查看31在列表中的下表位置
index = age.index(31)
print(index)

5.3 元组

5.3.1 元组的定义和操作

'''
演示tuple元组的定义和操作
'''
#定义元祖
t1 = (1,'hello',True)
t2 = ()
t3 = tuple()
print(f't1的类型是{type(t1)},内容是{t1}')
print(f't2的类型是{type(t2)},内容是{t2}')
print(f't3的类型是{type(t3)},内容是{t3}')

#定义单个元素的元素(单个元素需要带上单个逗号)
t4 = (1,)
t5 = (2)
print(f't4的类型是{type(t4)},内容是{t4}')
print(f't5的类型是{type(t5)},内容是{t5}')

# 元组的嵌套
t6 = ((1,2,3),(9,0,34))
print(f't6的类型是{type(t6)},内容是{t6}')

# 下标索引取出内容
num = t6[1][1]
print(f'从嵌套元祖中取出的数据是:{num}')

#元组的操作:index查找方法
t1 = (1,0,'hello',True,False,True,False,True,False,'hhhh')
index = t1.index(False)
print(f'True在t1中的下标是:{index}')

#元组的操作: count统计方法
num = t1.count(True)
print(f'在元祖中统计True的数量有{num}个')

#元祖的操作:len函数统计元组元素的的数量
num = len(t1)
print(f'元祖的数量有:{num}个')

#元组的遍历 while循环
index = 0
while index < len(t1):
    print(f"元组的元素有:{t1[index]}")
    index += 1

#元组的遍历 for循环
for i in t1:
    print(f"2元组的元素有:{i}")

# 定义一个元组
#元组的元素不可修改,但元组内列表内容元素可以修改
t10 = (1,2,[3333,5555])
print(f't10的内容是:{t10}')
t10[2][0] = '黑马python'
t10[2][1] = '西八'
print(f't10的内容是:{t10}')

5.3.2 元组的基本操作案例

#定义元组
information = ('周几轮',18,['basketball','rap'])

#查询年龄所在下标位置
index = information.index(18)
print(f'年龄所在下标位置:{index}')

#查询学生姓名
name = information[0]
print(f"学生姓名是{name}")

#删除学生爱好basketball
del information[2][0]
print(information)

#增加爱好dance
information[2].append('dance')
print(information)

5.4 字符串

5.4.1 字符串的定义和操作

'''
演示以数据容器的角色,学习字符串的相关操作
'''

my_str = 'python learning time'
#通过下标索引取值
a = my_str[3]
b = my_str[-6]
print(f'下标为2的值是:{a},下标为-6的值是{b}')

# index方法
c = my_str.index('learning')
print(f'learing的起始下标是:{c}')

#replace方法
new_my_str = my_str.replace("i",'程序')
print(f'{my_str}替换i后结果是:{new_my_str}')

#split方法 字符串的分割
my_str3 = 'aaabbaddaeeaggakka'
my_str3_list = my_str3.split('a')
print(f'字符串{my_str3}按照a进行split分割后得到:{my_str3_list},类型是:{type(my_str3_list)}')

#strip方法  去除字符串收尾元素
my_str = '  123python   learning   time21   '
new_my_str = my_str.split() #不传入参数,则去除首尾空格
print(new_my_str)
new_my_str2 = my_str.split('12')
print(new_my_str2)

#统计字符串某字符串出现的次数
my_str = '  123python   learning   time21   '
count = my_str.count('2')
print(f'2出现的次数是{count}')

#统计字符串的长度
count = len(my_str)
print(f'字符串{my_str}的长度是{count}')

#字符串的while的循环遍历
my_str2 = 'whoiam'
index = 0
while index < len(my_str2):
    print(my_str2[index])
    index += 1

#字符串的for的循环遍历
for i in my_str3:
    print(i)

5.4.2字符串的大小比较

'''
演示字符串的大小比较
'''

#abc 比较abd
print(f"abc 小于 abd的结果是:{'abd' > 'abc'}")

#ab比较a
print(f"a小于 ab的结果是:{'ab' > 'a'}")

#ab比较A
print(f"A小于 a的结果是:{'a' > 'A'}")

#key1比较key2
print(f"key1小于 key2的结果是:{'key2' > 'key1'}")

5.4.3字符串的基础操作案例

str = 'itheima itcast boxuegu'

#统计字符串内it数量
count = str.count('it')
print(f'字符串内it数量有:{count}')

#将空格替换为|
new_str = str.replace(' ','|')
print(f'将字符串{str}内空格替换为|的结果为{new_str}')

#按照|字符分割为列表
new_str_list = new_str.split("|")
print(new_str_list)

5.5 对数据容器进行切片操作

5.5.1 演示对序列进行切片操作

'''
演示对序列进行切片操作
'''

#对list进行切片,从1开始,4结束,步长1
my_list = [0,1,2,3,4,5,6]
re = my_list[1:4]       #步长默认1,可以不写
print(f'结果1:{re}')

#对tuple进行切片,最开始,到最后结束,步长1
my_tuple = (0,1,2,3,4,5,6)
re2 = my_tuple[:]       #步长默认1,可以不写
print(f'结果2:{re2}')

#对str进行切片,最开始,到最后结束,步长2
my_str = '0123456'
re3 = my_str[::2]
print(f'结果3:{re3}')

#对str进行切片,最开始,到最后结束,步长-1
my_str = '0,1,2,3,4,5,6'
re4 = my_str[::-1]
print(f'结果4:{re4}')

#对列表进行切片,从3开始,1结束,步长-1
my_list = [0,1,2,3,4,5,6,7,8,9,100]
re5 = my_list[3:1:-1]
print(f'结果5:{re5}')



#对元祖进行切片,最开始,到最后结束,步长-2
my_tuple = (0,1,2,3,4,5,6,3333,7,89,99,99999)
re6 = my_tuple[::-2]
print(f'结果6:{re6}')

5.5.2 对数据容器操作的基础案例

str = '万过薪月,员序程马黑来,nohtyp学'

#方法一   切片,倒序取出
re = str[9:4:-1]
print(re)

#方法二  倒序取出,然后切片
re2 = str[::-1][9:14]
print(re2)

#方法三,split分割,replace分割“来”为空,倒序字符串
re3 = str.split(',')[1].replace('来','')[::-1]
print(re3)

5.6 集合

5.6.1 集合的定义和操作

'''
演示数据容器集合
'''
#定义集合  集合会去重,不支持重复元素
my_set = {'sss','qqq','wwww','rrr','ww'}
my_set_empty = set() #定义空集合
print(f'{my_set},{type(my_set)}')
print(f'{my_set_empty},{type(my_set_empty)}')

#添加新元素
my_set.add("python")
print(f'{my_set}')

#移除元素
my_set.remove('python')
print(f'{my_set}')

#从集合中随机取出元素
element =my_set.pop()
print(f'{my_set},{element}')

#清空集合
my_set.clear()
print(f'{my_set}')

#取出两个集合的差集  会产生新集合,集合1和2不变
set1 = {1,2,3}
set2 = {1,5,3}
set3 = set1.difference(set2)
print(f'{set1},{set2},{set3}')

#消除两个集合的差集  不会产生新集合,集合1变
set1 = {1,2,3}
set2 = {1,5,3}
set3 = set1.difference_update(set2)
print(f'{set1},{set2}')

#两个集合合并    会产生新集合,集合1和2不变
set1 = {1,2,3}
set2 = {1,5,3}
set3 = set1.union(set2)
print(f'{set1},{set2},{set3}')

#统计集合数量
count = len(set3)
print(f'{count}')

#集合的遍历
#集合不支持下标索引,不可以while循环
for i in set3:
    print(f"{i}")


'''
集合的基本操作案例
'''
my_list = [1,2,3,4,5,6,7,8,9,0,5,6,5,3,21,1,334,4,3,2,1]

#定义空集合
set = set()

#通过for循环遍历列表
#将列表中元素添加到集合中
for i in my_list:
    print(f'{i}')
    set.add(i)
print(f"{set}")

5.7 字典

5.7.1 字典的定义和操作

'''
演示字典的定义
'''

#定义字典  字典中的key不可以重复 {key,value}
my_dict = {'网咯红':99 ,'周几轮':88 ,'林俊杰':77 }
#定义空字典
my_dict2 = {}
my_dict3 = dict()
print(f'{my_dict},{type(my_dict)},\n'
      f'{my_dict2},{type(my_dict2)},\n'
      f'{my_dict3},{type(my_dict3)}')

#从字典中基于key获取value
score = my_dict['林俊杰']
print(f'{score}')

#字典的嵌套,key,value可以是任意数据类型,(key不可为字典)
stu_score_dict = {
    '王力宏':{
        'aa':77,
        'bb':55,
        'cc':66
    },
    '周杰伦':{
        'aa': 47,
        'bb': 555,
        'cc': 106
    },
    '林俊杰':{
        'aa': 127,
        'bb': 545,
        'cc': 876
    }
}
print(f'{stu_score_dict}')

#查看学生成绩
score = stu_score_dict['周杰伦']['aa']
print(f'{score}')

'''
字典的常用操作
'''
my_dict = {'网咯红':99 ,'周几轮':88 ,'林俊杰':77 }
#新增元素
my_dict['张学友'] = 62
print(f'{my_dict}')

#更新元素
my_dict['周几轮'] = 9
print(f'{my_dict}')

#删除元素

score = my_dict.pop('周几轮')
print(f'{my_dict},{score}')

#清空元素
my_dict.clear()
print(f'{my_dict}')

#遍历字典
#获取全部key
my_dict = {'网咯红':99 ,'周几轮':88 ,'林俊杰':77 }
keys = my_dict.keys()
print(f'{keys}')
# 方式1  通过获取所有key来遍历字典
for key in keys:
    print(f'{key},{my_dict[key]}')

#方式2 通过直接对字典进行for循环,每一次循环得到key
for key in my_dict:
    print(f'222\t{key},aaaa\t{my_dict[key]}')

#统计字典内的元素数量
num = len(my_dict)
print(f'{num}')


'''
字典的基本操作案例
'''

#定义字典
my_dict = {
    '王力宏':{
        '部门':'科技部',
        '工资':3000,
        '级别':1
    },
    '周杰伦':{
        '部门': '市场部',
        '工资': 5000,
        '级别': 2
    },
    '林俊杰':{
        '部门': '市场部',
        '工资': 7000,
        '级别': 3
    },
    '张学友':{
        '部门': '科技部',
        '工资': 4000,
        '级别': 1
    },
    '刘德华':{
        '部门': '市场部',
        '工资': 6000,
        '级别': 2
    }
}
#遍历字典,找到name这个key
for name in my_dict:
    #判断name key对应的级别是否为1
    if my_dict[name]['级别'] == 1:
        #如果是级别加1,工资加1000
            my_dict[name]['级别'] += 1
            my_dict[name]['工资'] += 1000
print(f'{my_dict}')

5.8 数据容器的通用操作

'''
演示数据容器的通用操作
'''

list1  =  [17,27,30,4,45]
tuple1 =  (10,2,3,44,5)
str1   =  'abcdefghij'
set1   =  {1,2,3,4,5}
dict1  =   {'key8':9,'key2':8,'key6':7,'key4':6,'key7':4}

#len元素个数
num = len(list1)
print(f'{num}')

num = len(tuple1)
print(f'{num}')

num = len(str1)
print(f'{num}')

num = len(set1)
print(f'{num}')

num = len(dict1)
print(f'{num}')

#max 最大元素
print(f'列表 最大的元素是:{max(list1)}')
print(f'元组 最大的元素是:{max(tuple1)}')
print(f'字符串最大的元素是:{max(str1)}')
print(f'集合 最大的元素是:{max(set1)}')
print(f'字典 最大的元素是:{max(dict1)}')

#min最小元素
print(f'列表 最小的元素是:{max(list1)}')
print(f'元组 最小的元素是:{max(tuple1)}')
print(f'字符串最小的元素是:{max(str1)}')
print(f'集合 最小的元素是:{max(set1)}')
print(f'字典 最小的元素是:{max(dict1)}')

#类型转换:容器转列表
print(f'列表   列表转换为列表的结果是:{list(list1)}')
print(f'元组   元组转换为列表的结果是:{list(tuple1)}')
print(f'字符串转字符串换为列表的结果是:{list(str1)}')
print(f'集合   集合转换为列表的结果是:{list(set1)}')
print(f'字典   字典转换为列表的结果是:{list(dict1)}')

#类型转换:容器转元组
print(f'列表   列表转换为元组的结果是:{tuple(list1)}')
print(f'元组   元组转换为元组的结果是:{tuple(tuple1)}')
print(f'字符串转字符串换为元组的结果是:{tuple(str1)}')
print(f'集合   集合转换为元组的结果是:{tuple(set1)}')
print(f'字典   字典转换为元组的结果是:{tuple(dict1)}')

#类型转换:容器转字符串
print(f'列表   列表转换为字符串的结果是:{str(list1)}')
print(f'元组   元组转换为字符串的结果是:{str(tuple1)}')
print(f'字符串转字符串换为字符串结果是:  {str(str1)}')
print(f'集合   集合转换为字符串的结果是:{str(set1)}')
print(f'字典   字典转换为字符串的结果是:{str(dict1)}')

#类型转换:容器转集合
print(f'列表   列表转换为集合的结果是:{set(list1)}')
print(f'元组   元组转换为集合的结果是:{set(tuple1)}')
print(f'字符串  字符串换为集合的结果是:{set(str1)}')
print(f'集合   集合转换为集合的结果是:{set(set1)}')
print(f'字典   字典转换为集合的结果是:{set(dict1)}')

#容器的通用排序功能 排序后结果会变成列表对象
print(f'列表   列表排序的结果是:{sorted(list1)}')
print(f'元组   元组排序的结果是:{sorted(tuple1)}')
print(f'字符串  字符排序的结果是:{sorted(str1)}')
print(f'集合   集合排序的结果是:{sorted(set1)}')
print(f'字典   字典排序的结果是:{sorted(dict1)}')

#反向排序
print(f'列表   列表反向排序的结果是:{sorted(list1,reverse=True)}')
print(f'元组  元组反向排序的结果是:{sorted(tuple1,reverse=True)}')
print(f'字符串  字符反向排序的结果是: {sorted(str1,reverse=True)}')
print(f'集合   集合反向排序的结果是: {sorted(set1,reverse=True)}')
print(f'字典   字典反向排序的结果是:{sorted(dict1,reverse=True)}')

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

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

相关文章

stm32F407-GPIO的使用——点亮LED并且讲解各个寄存器

stm32F407-GPIO的使用——点亮LED并且讲解各个寄存器 本文为stm32GPIO的介绍与使用&#xff0c;例子是简单的LED点亮。 一、 GPIO GPIO&#xff08;General Purpose I/O Ports&#xff09;意思为通用输入/输出端口&#xff0c;通俗地说&#xff0c; 就是一些引脚&#xff0c;可…

关于AISD300系列三相智能安全配电装置的详细介绍-安科瑞 蒋静

1概述 AISD300系列三相智能安全配电装置是安科瑞专为低压配电侧开发的一款智能安全配电产品&#xff0c;本产品主要针对低压配电系统人身触电、线路老化、短路、漏电等原因引起电气安全问题而设计。 产品主要应用于学校、加油站、医院、银行、疗养院、康复中心、敬老院、酒店…

Python 自动化之收发邮件(一)

imapclient / smtplib 收发邮件 文章目录 imapclient / smtplib 收发邮件前言一、基本内容二、发送邮件1.整体代码 三、获取邮件1.整体代码 总结 前言 简单给大家写个如何用Python进行发邮件和查看邮件教程&#xff0c;希望对各位有所帮助。 一、基本内容 本文主要分为两部分…

动画制作与动画控制器的使用_unity基础开发教程

动画制作与动画控制器的使用 导入素材创建动画控制器制作人物动画 前面我们讲过2D游戏中环境地图的制作&#xff0c;这里教大家使用动画控制器的使用 导入素材 先导入一下素材 选择window&#xff0c;点击Asset Store 点击Search online 搜索栏输入Sunny&#xff0c;然后回车…

2022年AMC8数学竞赛真题的典型考点和解析

大家好&#xff01; 从战争中学习战争。 在2024年AMC8考前一个多月的时间中&#xff0c;孩子除了完成学校作业外&#xff0c;备考AMC8的有效方法就是做往年真题&#xff0c;通过往年真题进一步了解AMC8的考点、题型&#xff0c;建立自己的解题策略和方法。并且查漏补缺&#…

Docker容器如何优雅地访问宿主机网络

# 前言 某些时候&#xff0c;我们会有在容器内容访问宿主机某个服务的需求&#xff0c;比如现在 openai 无法直接访问&#xff0c;需要给项目添加代理&#xff0c;我的 chatgpt-dingtalk (opens new window) 项目支持了通过环境变量指定代理地址。 添加方式如下&#xff1a; …

使用对象处理流ObjectOutputStream读写文件

注意事项: 1.创建的对象必须实现序列化接口,如果属性也是类&#xff0c;那么对应的类也要序列化 2.读写文件路径问题 3.演示一个例子 &#xff08;1&#xff09;操作的实体类FileModel&#xff0c;实体类中有Map,HashMap这些自带的本身就实现了序列化。 public class File…

c语言printf函数与==和=

介绍&#xff1a; 本篇文章 是一些 关于c语言的 细节代码讲解 代码与讲解&#xff1a; 代码&#xff1a; #include <stdio.h>int main(void) {int a 1, b 2, c 3;printf("%d %d %d %d\n", a b c, a b c, a (b c), a (b c));return 0; } 大家先自…

玉米浸泡液回收植酸,植酸回收树脂

植酸为环己六醇六磷酸&#xff0c;分子量为660&#xff0c;植酸钠为环己六醇六磷酸钠&#xff08;Na12C6H6O24P6&#xff09;分子量为924。 植酸用途&#xff1a;在食品工业中植酸钠可用作食品添设剂&#xff0c;菲丁&#xff08;植酸钙&#xff09;可用于生产肌醇&#xff0c…

02.尚医通 Mybatis-Plus

1、前期准备 a. 创建数据库 CREATE TABLE USER (id BIGINT(20)NOT NULL COMMENT 主键ID,NAME VARCHAR(30)NULL DEFAULT NULL COMMENT 姓名,age INT(11)NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50)NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id) );INSERT INTO user…

jdk+zookeeper+kafka 搭建kafka集群

环境准备 环境资源包&#xff1a; jdk-8u341-linux-x64.tar.gz kafka_2.12-2.2.0.tgz zookeeper-3.4.14.tar.gz server-idip状态server110.206.120.10leaderserver210.206.120.2followerserver310.206.120.3follower 一、安装jdk 因为kafka需要Java环境&#xff0c;所以优先…

Liunx高级系统设计9-线程间同步与互斥

同步与互斥的概念 互斥&#xff1a;同一时间&#xff0c;只能有一个任务&#xff08;进程或线程&#xff09;执行&#xff0c;谁先执行不确定。 同步&#xff1a;同一时间&#xff0c;只能有一个任务&#xff08;进程或线程&#xff09;执行&#xff0c;有顺序的执行。 同步…

CSS的基本选择器及高级选择器(附详细示例以及效果图)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中CSS的基础选择及高级选择器&#xff08;详解&#xff09;以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xf…

螺丝厂家:什么是钣金螺丝?

金属板由常见的金属或合金&#xff08;钢、铜、镍、锡、钛等&#xff09;组成&#xff0c;比木材更硬、更坚固。因此&#xff0c;它需要使用特殊的螺钉。您通常无法将传统螺钉拧入钣金中。值得庆幸的是&#xff0c;有专为钣金设计的特殊类型的螺钉。被称为钣金螺钉&#xff0c;…

对多个 App 设计工具组件使用一个回调

当要在App 中提供多种方法来执行某个操作时&#xff0c;在组件间共享回调非常有用。例如&#xff0c;当用户点击按钮或在编辑字段中按下 Enter 键时&#xff0c;App 可以用同样的方式响应。 共享回调的示例 此示例说明如何创建一个 App&#xff0c;其中包含共享一个回调的两个…

运筹优化 | 模拟退火求解旅行商问题 | Python实现

"""模拟退火旅行商""" import random import numpy as np import math import time import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False location np.loadtxt(city_location.t…

蓝牙插座_风扇_灯

项目需求 通过蓝牙模块&#xff0c;实现手机控制蓝牙插座 / 风扇 / 灯。 本质&#xff1a; 1. 采用蓝牙的透传功能&#xff1b; 2. 控制 IO 口的输出。 HC01_TX -- RX1 HC01_RX -- TX1 项目实现 1、串口非中断法 2. 串口中断法

【UML】第4篇 UML公共机制(补扩展机制)

目录 一、扩展机制 1.1 构造型 1.2 标记值&#xff08;Tagged Value&#xff09; 1.3 约束&#xff08;Constraint&#xff09; 上节扩展机制没有讲完&#xff0c;如上图。 一、扩展机制 1.1 构造型 UML中的扩展机制包括约束、构造型和标记值&#xff0c;其中的构造型定义…

Github、Gitee优秀的开源项目分享

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 资源收集不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 ​ Java 项目 javacore - Java …

电子印章法律风险点及安全防范措施

公章是公司处理内外部事务的印鉴&#xff0c;公司对外的正式信函、文件、报告使用公章&#xff0c;盖了公章的文件具有法律效力。公章由公司的法定代表人执掌&#xff0c;法定代表人如果把法定代表人章与公章一同使用就代表公司行为。 随着社会数字化转型&#xff0c;电子印章及…