day7-集合和字符串

集合
  1. 什么是集合

    集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1,元素2…}

    集合是可变的(支持增删改查),集合是无序的(不支持下标操作)

    元素是不可变类型,唯一的:

    1)空集合

    x = {}  # 空字典
    s1 = set()  # 空集合
    print(type(x),type(s1))  # # <class 'dict'> <class 'set'>
    

    2)元素是不可变的

    s2 = {10,'abc',(1,2)}
    # 报错,列表可变不能作为集合元素
    # s3 = {10,'abc',[1,2]}  # s3 = {10,'abc',[1,2]}  #
    

    3)集合的唯一性

    s4 = {1,52,3,52,1}  # {1, 3, 52}
    print(s4)# 集合去重
    names = ['张三','李四','张三']
    print(list(set(names)))  #  ['李四', '张三']
    

    4)集合是无序的

    print({1,2,3}  == {2,3,1})  # True
    
  2. 集合的增删改查

    1)查 - 集合只能遍历

    # 补充:通过for循环无序序列的时候,都是先将序列转换成列表,然后编列列表
    games = {'王者','和平精英','我的世界','贪吃蛇'}
    for i in games:print(i)
    

    2)增

    # 集合.add(元素)  - 在集合中添加指定元素
    # 集合.update(序列) - 将序列中所有的元素添加到集合中(序列中的元素是不可变的)
    games = {'王者','和平精英','我的世界','贪吃蛇'}
    games.add('英雄联盟')
    print(games)
    games.update({'开心消消乐','QQ炫舞'})
    print(games)  # # {'王者', '英雄联盟', 'QQ炫舞', '开心消消乐', '我的世界', '贪吃蛇', '和平精英'}
    

    3)删

    # 集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
    # 集合.discard(元素)  - 删除集合中指定的元素(元素不存在不会报错)
    games = {'王者', '英雄联盟', 'QQ炫舞', '开心消消乐', '我的世界', '贪吃蛇', '和平精英'}
    games.remove('贪吃蛇')
    print(games)   #  {'英雄联盟', '开心消消乐', 'QQ炫舞', '和平精英', '我的世界', '王者'}games.discard('我的世界')
    print(games)  #  {'和平精英', '英雄联盟', '王者', 'QQ炫舞', '开心消消乐'}
    

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

    games.remove('和平精英')
    games.add('部落冲突')
    print(games)  #  # {'开心消消乐', '部落冲突', '英雄联盟', '王者', 'QQ炫舞'}
    
  3. 数学集合运算

    python中的集合支持数学中的集合元素:&(交集)、|(并集)、-(差集)、^(对称差集)、> >= < <=(判断子集包含关系)# 集合1 & 集合2  - 求两个集合的公共部分
    print({1,5,2}&{5,3,6,99,2,2})  # {2, 5}
    print({1,5,2,'abc'} & {5,3,6,99,2,2}) # {2, 5}
    print({1,5,2,'abc'} | {5,3,6,99,2,2}) # {1, 2, 99, 3, 5, 6, 'abc'}
    print({1,5,2,'abc'} ^ {5,3,6,99,2,2}) # {1, 99, 3, 6, 'abc'}# 2) 集合1 - 集合2  - 集合1中去掉包含集合2中剩下的元素
    print({1,5,2,'abc'} - {5,3,6,99,2,2})  # {1, 'abc'}# 3)集合1 > 集合2  - 判断集合2是否是结合1的真子集
    # 3)集合1 < 集合2  - 判断集合1是否是结合2的真子集
    # 3)集合1 >= 集合2  - 判断集合2是否是结合1的子集
    # 3)集合1 <= 集合2  - 判断集合1是否是结合2的子集
    print({1,2,3,4} > {1,2})  # Truepython = {'stu1', 'stu2', 'stu4', 'stu6', 'stu7', 'stu10', 'stu11'}
    h5 = {'stu1', 'stu3', 'stu5', 'stu7', 'stu8', 'stu10'}
    java = {'stu1', 'stu2', 'stu5', 'stu6', 'stu7', 'stu9', 'stu12'}
    #   a. 求选课学生总共有多少人
    s1 = python | h5 | java
    print('总人数:',len(s1))
    #   e. 求选了三门学生的学生的数量和对应的名字
    s2 = python & h5 & java
    print('选了三门课的学生:',len(s2))
    #   b. 求只选了第一个学科的人的数量和对应的名字
    s3 = python - h5 - java
    print('只选了python的学生:',len(s3))
    #   c. 求只选了一门学科的学生的数量和对应的名字
    s4 = python ^ h5 ^ java - s2
    print('只选了一门学科的学生:',len(s4))
    #   d. 求只选了两门学科的学生的数量和对应的名字
    s5 = s1 - s4- s2
    print('只选了两门学科的学生:',len(s5))
  4. 什么是字符串(str)

    字符串是容器型数据类型,将‘’、“”、“”“”“”、‘’‘’‘作为容器的标志,里面的每一个基本符号就是字符串的元素

    字符串是不可变的(不支持增删改);字符串是有序的(支持下标)

    元素:引号里面的每个基本单元就是字符串的元素,又叫字符(一般使用长度为1的字符串来表示字符)

    # 空串
    s1 = ''
    s2 = ""
    s3 = ''''''
    s4 = """"""
    print(type(s1))  # # <class 'str'># 字符串是有序的
    print('abc' == 'bac') # False
    
  5. 字符

    1)转义字符:

    在特定的一个或者多个符号前加 \ 让符号具有特殊功能和特殊意义;那么这种带有\ 的字符就是转义字符

    转义字符 特殊功能和特殊意义
    \n 换行
    \t 水平制表符
    \’ 表示一个普通的单引号
    \" 表示一个普通的双赢号
    \\ 表示一个普通反斜杠
    注意: 任意一个转义字符的长度都是1

    2)普通字符:

    除了转义字符以外的字符都是普通字符,普通字符在字符串中表示这个符号本身。

  6. 字符的编码

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

    字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表

    ASCII码表 Unicode编码表
    ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括:数字、字母(大写,小写)数字字符在字母字符的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间隔 Unicode编码表包含ASCII码表 中文编码:4e00 - 9fa5

    1)编码字符

    print('\u4e00','\u9fa5')  #  # 一 龥
    

    2)chr(编码值) - 获取编码值对应的字符

    print(chr(97))  # a
    print(chr(65))  # A
    # 打印所有的中文字符
    count = 0
    for x in range(0x4e00,0x9fa5+1):print(chr(x),end=' ')count += 1if count % 25 == 0:print()

    3)ord(字符) - 获取字符对应的编码值

    print(ord('杨'))
    print(bin(ord('杨')),bin(ord('健')))  # 0b110011101101000 0b101000001100101
    
  7. 字符串的相关操作

    1.获取字符:字符串获取字符和列表获取元素方法一样

    1)获取单个字符

    sentence = '死亡如风,常伴吾身!'
    print(sentence[2])  # 如
    print(sentence[-8])  # 如
    

    2)字符切片

    sentence2 = 'good good study!day up'
    print(sentence2[5:-2])  # good study!day
    print(sentence2[::-1]) # pu yad!yduts doog doog
    

    3)遍历

    sentence2 = 'good good study!day up'
    for x in sentence2:print(x)
    for index,x in enumerate(sentence2):print(index,x)
    for index in range(len(sentence2)):print(sentence2[index])
    

    2.加法和乘法

    print('abc'+'123') # abc123
    print('abc'*2)  # abcabc
    

    3.比较大小:两个字符串比较大小是比较第一对不相等的字符编码值的大小

    char 判断
    ‘a’ <= char <= ‘z’ 小写字母
    'A <= char <= ‘Z’ 大写字母
    ‘a’ <= char <= ‘z’ or 'A <= char <= ‘Z’ 字母
    ‘0’ <= char <= ‘9’ 数字字符
    ‘\u4e00’ <= char <= ‘\u9fa5’ 中文范围
    print('abc' > 'XKKDK')  # True
    print('abc' > '你好')  #  False# 练习:输入一个字符串,统计字符串中小写字母的个数
    char = input('请输入:')
    count = 0
    for x in char:if 'a' <= x <= 'z':count += 1
    print('输入字符串中小写字母个数:',count)# 练习:输入一个字符串,删除字符串中所有的中文字符
    char = 'nis离开ss===KLKJLk看看'
    new_char = ''
    for x in char:if '\u4e00' <= x <= '\u9fa5':continuenew_char += x
    print(new_char)
    

作业

  1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)

    例如: 输入**'abcd1234 ’ ** 输出**‘bd24’**

    char = 'abcd1234'
    print(char[1::2])  # bd24
    
  2. 输入用户名,判断用户名是否合法(用户名长度6~10位)

    user_name = input('输入用户名:')
    if 6 <= len(user_name) <= 10:print('合法')
    else:print('不合法')
    
  3. 输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)

    例如: ‘abc’ — 合法 ‘123’ — 合法 ‘abc123a’ — 合法

    for x in user_name:if not (('a' <= x <= 'z' or 'A' <= x <= 'Z') or '0' <= x <= '9'):print('不合法')break
    else:print('合法')
    
  4. 输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)

    例如: ‘abc’ — 不合法 ‘123’ — 不合法 ‘abc123’ — 不合法 ‘Abc123ahs’ — 合法

    if 'A' <= name[0] <= 'Z':have_name = Falsefor c in name:if not ('a' <= c <= 'z' or 'A' <= c <= 'Z' or '0' <= c <= '9'):print('不合法')else:if '0'<= c <='9':have_name = Trueelse:if have_name:print('合法')else:print('不合法')
    else:print('不合法')
    
  5. 输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串

    例如:输入**‘abc1shj23kls99+2kkk’** 输出:'123992’

    char = 'abc1shj23kls99+2kkk'
    new_char = ''
    for i in char:if '0' <= i <= '9':new_char += i
    print(new_char)
    
  6. 输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)

    例如: 输入**‘a2h2klm12+’ ** 输出 'A2H2KLM12+'

    char = 'a2h2klm12+'
    new_char = ''
    print(char.upper())  # A2H2KLM12+for x in char:temp_char = xif 'a' <= x <= 'z':temp_char = chr(ord(x)-32)new_char += temp_char
    print(new_char)
    
  7. 输入一个小于1000的数字,产生对应的学号

    例如: 输入**‘23’,输出’py1901023’** 输入**‘9’, 输出’py1901009’** 输入**‘123’,输出’py1901123’**

    user_char = int(input('请输入:'))
    print('py1901{:0>3d}'.format(user_char))user_char = int(input('请输入:'))
    print('py1901'+user_char.zfill(3))
  8. 输入一个字符串,统计字符串中非数字字母的字符的个数

    例如: 输入**‘anc2+93-sj胡说’** 输出:4 输入**’===’** 输出:3

    char = 'anc2+93-sj胡说'
    count = 0
    for i in char:if not ('a' <= i <= 'z' or 'A' <= i <= 'Z' or '0' <= i <= '9'):count += 1
    print(count)
    
  9. 输入字符串,将字符串的开头和结尾变成’+’,产生一个新的字符串

    例如: 输入字符串**‘abc123’, 输出’+bc12+’**

    char = 'abc123'
    print(f'+{char[1:-1]}+')
    
  10. 输入字符串,获取字符串的中间字符

例如: 输入**‘abc1234’** 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**

char = 'abc123'
if len(char) & 1:print(char[len(char) // 2 -1])
else:print(char[len(char) // 2 - 1],char[len(char) // 2])
  1. 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

例如: 字符串1为:how are you? Im fine, Thank you! , 字符串2为:you, 打印8

char = 'how are you? Im fine, Thank you!'
print(char.find('you'))  # 8
print(char.find('you',50))  # -1   索引超出范围,不会报错返回 -1
print(char.index('you')) # 8
# print(char.index('you',50)) # 索引超出范,会报错
  1. 获取两个字符串中公共的字符

例如: 字符串1为:abc123, 字符串2为: huak3 , 打印:公共字符有:a3

str1 = 'abc123'
str2 = 'hua1112bk333'
new_str = ''
for x in str1:for i in str2:if x == i and x not in new_str:new_str += x
print(new_str)

2020-09-29-集合和字符串及作业相关推荐

  1. 9.29集合和字符串

    Part1 1.什么是集合 集合是容器型数据类型,将{}作为容器的标志里面多个元素用逗号隔开:{元素1,元素2,元素3,-} 可变的;无序的 元素:不可变的数据;唯一的 1.空集合 x = {} # ...

  2. 【HDOJ 2020.09.29】一些语法水题ByVJ

    By VJ 小抄c版v2 A //上次不是做过了 #include<stdio.h> int main(){char a, b, c, t;while(scanf("%c%c%c ...

  3. 2020/09/29 鼠标移入 显示二维码或图片 移出隐藏

    要模仿的效果 代码 -js -css -js函数 -最终效果 代码块 js let showImg = function (e) {// console.log("show")e. ...

  4. 2020.09.29重读 原2020.08.04读 MoreFusion

    MoreFusion: Multi-object Reasoning for 6D Pose Estimation from Volumetric Fusion 1.背景信息 2.方法 2.1obje ...

  5. 函授计算机基础知识考试试题,2020年函授本科计算机应用基础课后作业、模拟题及答案.doc...

    2020年函授本科计算机应用基础课后作业.模拟题及答案.doc 学 海 无 涯第一章作业14题一.单项选择题(共12小题,每题7分,共84.0分)第1题在计算机中,用文字.图像.语言.情景.现象所表示 ...

  6. 2022.09.29 周四

    2022.09.29 周四 回顾 元组 容器:(数据1,数据2,数据3,--) 不可变的:有序的 元素:没有要求 集合 容器:{数据1,数据2,数据3,--} 可变的:无序的: 元素:不可变的数据:唯 ...

  7. 【python第四章——序列(列表、元组、字典、集合、字符串、正则)】

    python第四章--序列 第四章--序列 4.1列表 4.2元组 4.3字典 4.4集合 4.5字符串(重要) 4.6正则表达式 第四章--序列 概念:序列指一块可存放多个值的连续内存空间,这些值按 ...

  8. python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....

    Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...

  9. python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串

    列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...

  10. python定义字典列表_Python基础语法(四)—列表、元组、字典、集合、字符串

    列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...

最新文章

  1. bzoj4006: [JLOI2015]管道连接
  2. c modern approach‘s forteenth chapter‘s study
  3. Linux下c开发 之 线程通信
  4. vdbench的作用_vdbench和fio测试磁盘性能的对比总结
  5. 转型HTML5前端工程师怎样学才能拿高薪?
  6. Lambda 表达式入门,这篇够了!
  7. Equal-size partition problem
  8. C#仿““狗屁不通文章生成器””功能
  9. vcpkg 详细介绍
  10. Java 导出Excel 自定义模板
  11. 常见的15种音频格式
  12. [译] APT分析报告:06.猖獗的小猫——针对伊朗的APT攻击活动详解
  13. 算法题|-灯泡开关问题
  14. 【工大SCIR】AAAI20 基于反向翻译和元学习的低资源神经语义解析
  15. Java 控制反转和依赖注入模式【翻译】【整理】
  16. 常用hadoop dfs命令
  17. 《控方证人》证词怎样被推翻的
  18. 市场调研-环保型烟花市场现状及未来发展趋势
  19. Win7上安装Hyper-V管理工具
  20. 谷歌地球.足不出户让你看遍天下2.3.0修改版无弹窗无影流部分安卓11以上系统不兼容

热门文章

  1. 区块链技术如何为票务行业赋能?
  2. Wireshark将udp包作为rtp包解析
  3. python如何顺序读取文件夹下的图片及文件
  4. MyEclipse自动关闭解决方法及eclipse.ini设置
  5. 《马克思主义基本原理》中的反映论、资本流通公式、劳动价值论、社会必要劳动时间
  6. 永磁同步电机磁链、电压、力矩方程
  7. mysql float字节长度_分析MySQL数据类型的长度
  8. JavaScript 国际化,货币展示与选定时区日期展示
  9. 学生党哪款蓝牙耳机价格实惠?五款最贵不过500元蓝牙耳机,音质卓越
  10. 【pygame】创建输入框和按钮