前言

不知不觉已经写了8篇了,不知读者有没有想跟作者说点悄悄话呢,那么请下方评论留言哈哈哈,我一定会关注你的~

一、集合

说明:字典和集合都可以使用 {} 定义,但是 Python 解释器会根据 {} 中的元素来判断。

1.1 创建集合

# 注意: 如果要创建空集合只能使用 set() ,因为 {} 用来创建空字典 

s1 = {
   10,20,30}
print(type(s1))  # 结果为 <class 'set'>

s2 = set()
print(type(s2))  # 结果为 <class 'set'>

d1 = {
   'name': '张三'}
print(type(d1))  # 结果为 <class 'dict'>

d2 = {
   }
print(type(d2)) # 结果为 <class 'dict'>

# 集合会自动去除重复数据,数据是无序的,所以也不能通过下标获取集合中的元素
s2 = {
   10,20,10,30}  
l1 = [10,20,10,30]  
t1 = (10,20,10,30)  

print(s2)  # {10, 20, 30}
print(l1)  # [10, 20, 10, 30]
print(t1)  # (10, 20, 10, 30)

# 通过下标获取集合中的元素
print(s2[0])    # 结果为报错 'set' object is not subscriptable

1.2 增加数据

  1. add(): 添加指定元素到集合中
# 注意: 因为集合有去重功能,所以,当集合追加的元素,原集合已有,那么不进行任何操作。

# 举例
s3 = {
   'a','b','c'}
s3.add('d')
print(s3)  # 结果为 {'b', 'd', 'c', 'a'}
s3.add('a')  # 自动去除重复的值
print(s3)  # 结果为 {'b', 'd', 'c', 'a'}
  1. update(): 和列表的 extend() 方法相似,追加的数据是序列
# 举例
# 单个元素也可以添加
s3 = {
   'a','b','c'}
s3.update('e')
print(s3)  # {'e', 'a', 'b', 'c'}

s3.update('hello')
print(s3)  # {'h', 'l', 'o', 'a', 'b', 'c', 'e'}

s3.update([10,20,30])
print(s3)  # {'h', 10, 'l', 'o', 'a', 20, 'b', 'c', 30, 'e'}

1.3 删除数据

  1. remove(): 删除集合中的指定元素,如果元素不存在则报错
# 举例
s3 = {
   'a','b','c'}

s3.remove(30)
print(s3)  # 报错

s3.remove('b')
print(s3)  # {'c', 'a'}
  1. discard(): 删除集合中的指定元素,如果元素不存在也不会报错
# 举例
s3 = {
   'a','b','c'}
s3.discard('o')
print(s3)  # {'c', 'a', 'b'}
  1. pop(): 随机删除集合中的某个元素,并返回这个元素
# 举例
s3 = {
   'a','b','c'}
s3.pop()
print(s3)  # {'a', 'c'}

1.4 查找数据

  • in : 判断数据在集合序列,在返回 True 反之 False。
  • not in : 判断数据不在集合序列 , 在返回 True 反之 False。
# 举例
s3 = {
   'a','b','c'}
print('a' in s3)   #结果为 True
print('a' not in s3)  #结果为 False

二、公共操作

2.1 公共运算符

运算符 描述 支持的容器类型
+ 合并 字符串、列表、元组
* 复制 字符串、列表、元组
in 判断元素是否存在 字符串、列表、元组、字典
not in 元素是否不存在 字符串、列表、元组、字典
  • " + " 的操作
# 举例
# 字符串操作
print('a'+'b')  # 结果为 ab

# 列表操作
l1 = ['a','b','c']
l2 = [10,20,30]
print(l1+l2)  # ['a', 'b', 'c', 10, 20, 30]

# 元组操作
t1 = (10,20)
t2 = (30,40)
print(t1+t2)  # (10, 20, 30, 40)
  • " * "的操作
# 举例

# 字符串操作
print('_'*10)  # __________

# 列表操作
list1 = ['a','b']
print(list1 * 3)  # ['a', 'b', 'a', 'b', 'a', 'b']

# 元组操作
tuple1 = ('a','b')
print(tuple1 * 3) # ('a', 'b', 'a', 'b', 'a', 'b')

in 和 not in 上面介绍过了,这里就不再介绍了,敲累了哈哈哈。

2.2 公共方法

函数 描述
len() 计算容器中元素个数
del 或 del() 删除
max() 返回容器中元素最大值
min() 返回容器中元素最小值
range(start,end,step) 生成从 start 到 end 的数字,步长为 step, 供 for 循环使用
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
  • len()
# 举例

# 字符串操作
str1 = 'abcdefg'
print(len(str1))  # 结果为 7

# 列表操作
list1 = [10,20,30]
print(len(list1))  # 结果为 3

# 元组操作
tuple1 = (1,2,['张三','小明'],True)
print(len(tuple1))  # 结果为 4

# 字典操作
dict1 = {
   'name': '张三','gender': '男','age': 20}
print(len(dict1))  # 结果为 3

# 集合操作
set1 = {
   10,5,'小明',True}
print(len(set1))  # 结果为 4
  • del()
# 举例

# 字符串操作
str1 = 'abcdefg'
del str1
print(str1)  # 结果为报错,因为已经删除 str1 变量存储的数据,所以再输出报错

# 列表操作
list1 = [10,20,30]
del list1[0]
print(list1)  # 结果为 [20, 30]

# 元组操作
tuple1 = (1,2,['张三','小明'],True)
del tuple1[0]
print(tuple1)  # 结果报错 因为元组不支持修改数据

# 字典操作
dict1 = {
   'name': '张三','gender': '男','age': 20}
del dict1['age']
print(dict1)  # 结果为 {'name': '张三', 'gender': '男'}

# 集合操作
set1 = {
   10,5,'小明',True}
del set1[0]
print(set1)  # 结果为报错,因为集合是无序的,不支持下标
  • max() : 获取序列中最大的值
# 举例

# 字符串操作
str1 = 'abcdefg'
print(max(str1))  # 结果为 g 因为是按26个字母顺序来取的值,越靠后字母表示越大

# 列表操作
l1 = [10,20,5,9,11]
print(max(l1))  # 结果为 20

# 元组操作
tuple1 = (1,2,True)
print(max(tuple1))   # 结果为 2 因为 True 为1

# 字典操作
dict1 = {
   'name': '张三','gender': '男','age': 20}
print(max(dict1))  # 结果为 name 按字母顺序取的值

# 集合操作
set1 = {
   '小明','老王','张三'}
print(max(set1))  # 结果为 老王 因为是按汉字拼音首字母顺序取最大值

看到这里,大部分同学都想到了,还会有最小值,没错,就是 min() 方法,使用方法和 max() 是一样的,具体就不介绍了,上过小学的数学课的,都会知道最小值怎么区别吧。

  • range()
# 举例
# 注意: range() 生成的序列不包含 end 数字
for i in range(1,10,1):
    print(i)
""" 结果为 1 2 3 4 5 6 7 8 9 """

for i in range(1,10,2):
    print(i)
    
""" 结果为 1 3 5 7 9 """
  • enumerate()
    • 语法格式
  enumerate(可遍历对象,start = 0)
  # 注意: start参数用来设置遍历数据的下标的起始值,默认为0
  # 举例
  list1 = ['a','b','c','d']
  for item in enumerate(list1):
    print(item)
    
  """ 结果为 (0, 'a') (1, 'b') (2, 'c') (3, 'd') """
  
  for item in enumerate(list1,10):
    print(item)
    
  """ 结果为 (10, 'a') (11, 'b') (12, 'c') (13, 'd') """

2.3 类型转换

说明: 想把谁转换成什么类型,就把谁把它包起来

# 举一个简单的例子
str1 = 'abc123'
print(list(str1)) # 结果为 ['a', 'b', 'c', '1', '2', '3']

三、任务清单

  1. 编写代码在控制台按照如下格式输出字符串
""" hello world 你好 世界 """
print('hello\n world\n你好\n 世界')

# 运行结果:
hello
    world
你好
    世界
  1. 让用户输入年龄,然后将用户的年龄加上2岁,并输出
age = int(input('请输入年龄:'))
print(age+2)

# 运行结果:
请输入年龄:10
12
  1. 马上就要到国庆假期了,很多人准备了出游计划,让用户输入出游目标地点,如“杭州”,然后在控制台输出“杭州,我来了”
city = input('输入出游目标地点:')
print(f'{
     city},我来了')

# 运行结果:
输入出游目标地点:北京
北京,我来了
  1. 继续上面的题目,这次让用户同时输入三个目标出游地点,中间使用“、”分割,如“杭州、苏州、常州”,然后在控制台输出
""" 杭州,我来了 苏州,我来了 常州,我来了 """
city = input('输入三个目标出游地点(中间用"、"分割):')
result = city.split('、')
for i in result:
    print(f'{
     i},我来了')

运行结果:
输入三个目标出游地点(中间用"、"分割):北京、天津、保定
北京,我来了
天津,我来了
保定,我来了
  1. 让用户输入邮箱地址,如“onlifes@163.com”,分别截取其中的
""" 用户名,如 onlifes 域名,如 163.com 并输出 """
address = input('输入邮箱地址:')
result = address.split('@')
print(f'用户名:{
     result[0]},域名:{
     result[1]}')

# 运行结果:
用户名:onlifes,域名:163.com
  1. 让用户输入邮箱地址,然后判断邮箱地址格式是否正确
""" 邮箱地址中必须包含 @ 符号和 ,并且 . 需要在@后面,还不能紧挨着 如果符合要求,输出“邮箱格式正确” 如果不符合要求,输出“邮箱格式不正确” """
address = input('输入邮箱地址:')
if address.find('@') != -1 and address.find('.') != -1:
    if address.find('.') > address.find('@')+1:
        print('邮箱格式正确')
    else:
        print('邮箱格式不正确')
else:
    print('邮箱格式不正确')
  1. 让用户输入身份证号,分别截取如下部分并输出
""" 出生年份 出生月份 出生日期 性别 说明:身份证号的组成是有规律的,前6位表示行政区划,第7-10位表示出生年份,11-12表示出生月份,13-14表示出生日期,17位表示性别,具体可参考下图:[身份证的组成结构- 本地宝 (bendibao.com)]( """
Id = input('请输入身份证号:')
if len(Id) > 17:
    print(f'出生年份:{
     Id[6:10]},出生月份:{
     Id[10:12]},出生日期:{
     Id[12:14]},性别:{
     "男" if Id[16] == "1" else "女"}')
else:
    print('身份证号码不对')
  1. 让用户输入手机号,然后判断是否以“156”开头
tel = input('请输入手机号:')
if tel.startswith('156'):
    print('是否以“156”开头')
else:
    print('不是否以“156”开头')
  1. 让用户输入手机号,然后做出如下判断
""" 必须以 156 或者 133 或者 137 开头 手机号码长度必须是11位 手机号码必须都是数字 如果符合上面三个要求,输出“格式正确的手机号”,如果不符合,则输出“手机格式不正确” """
tel = input('请输入手机号:')
if tel.startswith('156') or tel.startswith('133') or tel.startswith('137'):
    if len(tel) == 11:
        if tel.isdigit():
            print('格式正确的手机号')
        else:
            print('手机格式不正确')
    else:
        print('手机格式不正确')
else:
    print('手机格式不正确')
  1. 让用户输入 QQ 号,然后做出如下判断
""" 必须全部都是数字 长度位6-11位 开头数字必须是1-9 """
QQ = input('请输入QQ号:')
list1 = ['1','2','3','4','5','6','7','8','9']
for i in list1:
    if  QQ.startswith(i):
        if 6<= len(QQ) <= 11:
            if QQ.isdigit():
                print('账号正确')
                break
            else:
                print('账号错误')
                break
        else:
            print('账号错误')
            break
else:
    print('账号错误')
  1. 按照如下步骤,完成成绩统计功能
""" 让用户录入5位同学的成绩,然后将这5个成绩存储起来 计算总分并输出 计算平均分并输出,小数点后保留2位数字 计算最高分并输出 计算最低分并输出 """
score = input('请输入5位同学的成绩(以、号分割):')
result = score.split('、')
sum = 0
for i in result:
    sum += int(i)
average = sum / len(result)
print(f'总分:{
     sum},平均分:{
     average:.2f},最高分:{
     max(result)},最低分:{
     min(result)}')

# 运行结果:
请输入5位同学的成绩(以、号分割):1015203020
总分:95,平均分:19.00,最高分:30,最低分:10
  1. 定义一个字典,存储“HTML”这门课的基本信息,包括课程名称、课时、学分和授课老师
dict1 = {
   'name': 'HTML','time': '16周','score': 100,'teacher': '张三'}
  1. 定义一个字典,存储你最喜欢的一部电影的信息,包括名称、上映日期、导演、一个主演名字
dict1 = {
   'name': '复仇者联盟1','time': '2013-10-28','director': 'xxx','star': 'xxx'}
  1. 定义一个字典,存储你最喜欢的一部电影的信息,包括名称、上映日期、导演和3个主演名字
dict1 = {
   'name': '复仇者联盟1','time': '2013-10-28','director': 'xxx','star': ['xxx','xx','xxx']}
  1. 定义一个字典,存储你最喜欢的一部电影的信息,包括名称、上映日期、导演和3个主演信息(主演名字和扮演角色名字)
dict1 = {
   'name': '复仇者联盟1','time': '2013-10-28','director': 'xxx',
         'star': [{
   'name': '张三','cos': '钢铁侠'},
                  {
   'name': '老王','cos': '绿巨人'}]}
  1. 创建一个序列,存储你最喜欢的2部电影的信息,包括名称、上映日期、导演和3个主演信息(主演名字和扮演角色名字)
dict1 = [{
   'name': '复仇者联盟1','time': '2013-10-28','director': 'xxx',
         'star': [{
   'name': '张三','cos': '钢铁侠'},
                  {
   'name': '老王','cos': '绿巨人'}]},
         {
   'name': '复仇者联盟2','time': '2016-10.28','director': 'xxx',
          'star': [{
   'name': '小明','cos': '美国队长'},
                   {
   'name': '小红','cos': '黑寡妇'}]}]
  1. 让用户输入最喜欢的一个人的名字,然后将这个名字进行反转并输出,如“李磊”编程“磊李”
name = input('请输入你最喜欢的一个人的名字:')
print(name[-1::-1])

# 运行结果:
请输入你最喜欢的一个人的名字:天上龙卷风卷龙上天
天上龙卷风卷龙上天

总结

期与君共勉