python第七天

# 1.什么是集合(set)
'''
集合是容器型数据类型,将{}作为容器的标志里面多个元素用逗号隔开:{元素1,元素2,元素3,...}
可变的;无序的
元素:不可变的数据,唯一的
'''
# 1)空集合
x = {}  # 空字典
s1 = set()  # 空集合
print(type(x), type(s1))  # <class 'dict'> <class 'set'>

# 2)元素是不可变的
s2 = {10, 'abc', (1, 2)}
print(s2)  # {(1, 2), 'abc', 10}

# 报错    TypeError: unhashable type: 'list'
# s3 = {10, 'abc', [1, 2]}
# print(s3)

# 3)元素是唯一的
s4 = {10, 20, 30, 10, 10}
print(s4)
# 集合去重
names = ['张三', '李四', '张三', '狗蛋']
names = list(set(names))
print(names)

# 4)集合是无序的

# 2.集合的增删改查
# 1) 查 - 集合只能遍历
# 补充:通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后遍历列表

# 2)增
# 集合.add(元素)   -  在集合中添加指定的元素
# 集合.update(序列)  -  将序列中所有的元素添加到集合中

# 3)删
# 集合.remove(元素)   -  删除集合中指定的元素(元素不存在会报错)
# 集合.discard(元素)  - 删除集合中指定的元素(元素不存在不会报错)

# 4)改 - 先删除原来的,再添加新的

# 3.数学集合运算
# python中的集合支持数学中的集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>、<、>=、<=(判断包含关系)
# 1)集合1 & 集合2  -  求连个集合的公共部分

# 2)集合1 | 集合2  -  合并两个集合产生一个新的集合

# 3)集合1 - 集合2  - 集合1去掉包含在集合2中剩下的元素

# 4)集合1 ^ 集合2  -  将两个集合合并后去掉公共部分

# 5)
# 集合1 > 集合2  -  判断集合2是否是集合1的真子集
# 集合1 < 集合2  -  判断集合1是否是集合2的真子集
# 集合1 >= 集合2 -   判断集合2是否是集合1的子集
# 集合1 <= 集合2 -   判断集合1是否是集合2的子集


# 3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
# a. 求选课学生总共有多少人
# b. 求只选了第一个学科的人的数量和对应的名字
# c. 求只选了一门学科的学生的数量和对应的名字
# d. 求只选了两门学科的学生的数量和对应的名字
# e. 求选了三门学科的学生的数量和对应的名字
python = {'stu1', 'stu2', 'stu4', 'stu6', 'stu7', 'stu10', 'stu11'}
h5 = {'stu1', 'stu3', 'stu5', 'stu7', 'stu8', 'stu10'}
java = {'stu1', 'stu2', 'stu5', 'stu6', 'stu7', 'stu9', 'stu12'}

s0 = python | h5 | java
print('参与选课的学生总数为:', len(s0))  # a题

s3 = python - java - h5
print('只选了第一个学科的学生:', s3, '人数:', len(s3))   # b题

s5 = python ^ java ^ h5 - (python & java & h5)
print('只选了一门学科的学生:', s5, '人数:', len(s5))    # c题

s6 = s0 - s5 - (python & h5 & java)
print('只选了两门学科的学生:', s6, '人数:', len(s6))    # d题

s7 = python & h5 & java
print('选了三门学科的学生:', s7, '人数:', len(s7))      # e题
# 1.什么是字符串(str)
'''
字符串是容器型数据类型,将''、""、''''''、""""""作为容器的标志里面的每一个基本符号就是字符串的元素
字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)
元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符的概念没有字符对应的类型,一般直接使用长度是1的字符串来表示字符)
'''
# 1)空串
s1 = ''
s2 = ""
s3 = ''''''
s4 = """"""
# 2)''、""、与''''''、""""""的区别
# ''、 ""  - 字符串中不能直接换行''''''和""""""可以换行

# 3)字符串有序

# 2.字符
'''
字符分为普通字符和转义字符两种:
1)转义字符
在特定的一个或者多个符号前加\让符号具有特殊功能或者特殊意义。那么这种带有\字符就是转义字符;
\n  -  换行
\t  -  水平制表符(相当于按一下Tab键)
\'  -  表示一个普通的单引号
\"  -  表示一个普通的双引号
\\  -  表示一个普通的反斜杠

注意:任意一个转义字符的长度都是1

2)普通字符
除了转义字符以外的字符都是普通字符,普通字符在字符串中表示这个符号本身,包括:汉字、数字、字母、符号、表情符号等......
'''

# 特殊的转义字符-编码字符:\u四位的十六进制数   -  表示16进制数对应的编码值对应的字符
str1 = 'abc\n123'
print(str1)

# 2.字符编码
'''
1)什么是字符编码
计算机在存储数据的时候只能存数字(存的数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值

2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表
常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表)
a.ASCII码表
ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括:英文标点符号、数字字符、字母字符以及其他的一些符号
ASCII码表中,数字字符在字母的前面,大写字母在小写字母的前面,大写字母结束后有其他的字符然后才是小写字母(相同的大小写字母之间的间隔是32)


b.Unicode编码表
Unicode编码表包含ASCII码表
中文编码范围:4e00 - 9fa5
'''
# 1)编码字符: \u四位的十六进制数

# 2)chr(编码值)  -  获取编码值对应的字符
print(chr(0x4e00), chr(19968))  # 一 一

# 3)ord(字符)   -  获取字符对应的编码值(返回的是十进制数)
print(ord('杨'), ord('昊'), ord('雨'))  # 26472 26122 38632
print(hex(26472), hex(26122), hex(38632))  # 0x6768 0x660a 0x96e8

1.获取字符
字符串获取字符和列表获取元素的方法一样
1)获取字符
k = ‘Jack love’
print(k[7], k[-2])

2)字符串切片
n = ‘i love you’
print(n[1:15:1])

3)遍历

2.加法和乘法
print(‘acd’ + ‘123’) # acd123
print(‘you you keep!’ + ‘dddwf ggg’) # you you keep!dddwf ggg

print(‘avb’ * 3) # avbavbavb
3.比较大小
两个字符串比较大小:比较第一对不相等的字符编码值的大小
‘’’
char
‘a’ <= char <= ‘z’ - 判断小写
‘A’ <= char <= ‘Z’ - 判断大写
‘a’ <= char <= ‘z’ or ‘A’ <= char <= ‘Z’ - 判断是字母
‘0’ <= char <= ‘9’ - 判断数字字符
‘\u4e00’ <= char <= ‘\u9fa5’ - 判断中文字符
‘’’
print(‘avf’ > ‘FXsEXs’) # True
print(‘agv’ > ‘你好’) # False
统计一个字符串中小写字符的个数
s22 = input(‘请输入一个字符串:’)
count = 0
for x in s22:
if ‘a’ <= x <= ‘z’:
count += 1
print(count)
练习:输入一个字符串,删除字符串中所有的中文字符
s2 = input(‘请输入一个字符串:’)
s3 = ‘’
for x in s2:
if not ‘\u4e00’ <= x <= ‘\u9fa5’:
s3 += x
print(s3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值