week2day4.集合和字符串

week2day4.集合和字符串

一.集合

1.认识集合(set)

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

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

(3)元素的要求:1.必须是不可变的数据 2.唯一的

(4)空集合:set()

2.集合的增删改查(不重要)

(1) 查 — 只能遍历
语法:for in 集合:
pass
用for循环遍历无序序列的时候,系统会在遍历之前自动将无序序列转换成列表,然后再遍历
(2)增 - 集合.add(元素) - 添加指定元素
集合.update(序列) - 将序列中所有的元素添加到集合中
(3)删 - 集合.remove(元素) - 删除指定元素
(4)无法直接改

3.数学集合运算

python中使用的集合和数学集合是一个东西,并且支持数学集合运算
python支持的数学集合运算:
(1)交集: A&B
(2)并集: A|B
(3)差集: A-B
(4)对称差集:A^B
(5)子集,真子集

二.字符串

1.什么是字符串(str)

​ (1)字符串是容器型数据类型,将’’,"",’’’’’’,""""""作为容器的标志,
​ (2)里面的每一个符号都是字符串的元素(字符串的元素又叫做字符)——字符可以是任何符号
​ 字符分为两种:普通字符,转义字符
​ (3)不可变的(不支持增删改),有序的(支持下标操作)
​ (4)空串:str=()

2.字符 — 字符串中的每个独立的符号就是一个字符

​ (1)普通字符 — 表示符号本身的字符就是普通字符
​ (2)转义字符 — 具备特殊或者特殊意义的符号就是转义字符。所有的转义字符的通用格式:\X,\XXX
​ (转义字符是通过\加普通字符构成的,但是不是所有的普通字符加\都可以变成转义字符)
注意:所有的转义字符长度都是1
\n-换行
​ \t-水平制表符(相当于按一次tab键)
'-一个单引号
"-一个双引号
\-一个反斜杠

三.字符编码

1.计算机存储数据的原理:

​ 计算机能够存储的数据只要数字,存数字的时候保存的是数字的补码。
​ 如果想要将非数字数据保存到计算机中,存储的时候一定会先将数据转化为数字。
​ 如果需要存储的是文字,计算机会保存这个文字符号对应的编码值。

2.编码值

​ 每个文字符号(字符)在计算机中都对应一个固定的数字,这个数字就是这个符号对应的编码值。

3.字符编码表— 记录每个符号和数字对应关系的表

​ 常用编码表:ASCII码表,Unicode编码表(Python)
​ (1)ASCII码表
​ ASCII码表只有128个字符(不够用)
​ 在ASCII码表中:数字字符在字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间隙
​ 数字从0开始连续递增,字母从(a/A)开始连续递增
​ a-97
​ A-65
(2)Unicode编码表 - 是ASCII码表的扩展,里面包含ASCII码表
​ Unicode编码表中包含了世界上所有的国家所有的民族的所有符号(万国码)
​ 中文编码范围:4e00 ~ 9fa5

4.编码在python中的应用

​ (1)chr函数:char(编码值) - 根据编码值获取对应的字符
​ (2)ord函数:odr(字符)- 获取字符对应的编码值(字符:长度是1的字符串)

四.字符串相关操作

1.查 - 获取字符(字符串获取字符和列表获取元素的语法一模一样)

2.字符串相关操作:

​ (1)+,*
​ (2)比较大小:>,<,>=,<=
​ 两个字符串比较大小,比较的是第一对不相等的字符的编码值的大小;
​ 应用:判断字符的性质
​ a.判断数字字符是否是数字字符:‘0’<=x<=‘9’
​ b,判断字符x是否是小写字母:‘a’<=x<=‘z’
​ c,判断字符x是否是大写字母:‘A’<=x<=‘Z’
​ d.判断字符x是否是字母:‘A’<=x<=‘Z’ or ‘a’<=x<=‘z’
​ e.判断字符x是否是中文:’\u4e00’<=x<=’\u9fa5’

3.in和 not in

​ 字符串1 in 字符串2 判断字符串1是否在字符串2中

五.housework

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

    例如: 输入’abcd1234 ’ 输出’bd24

    str1=input('请输入一个字符串:')
     print(str1[1::2])
    
  2. 输入用户名,判断用户名是否合法(用户名长度6~10位)

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

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

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

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

    user_name=input('请输入用户名:')
    if not ('A'<=user_name[0]<='Z'):
        print('输入不合法')
    else:
     	count=0
    	count_not=0
        for i in user_name[1:]:
            if not ('0'<=i<='9' or 'a'<=i<='z' or 'A'<=i<='Z'):
                count_not+=1
                break
            elif '0'<=i<='9':
                count+=1
        if count==0 or count_not==1:
            print('输入不合法')
        else:
            print('输入合法')
    
  5. 输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串

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

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

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

    #方法一:
     str1=input('请输入一个字符串:')
     str2=str1.upper()
     print(str2)
    
    #方法二:
    str1=input('请输入一个字符串:')
    result=''
    for i in str1:
        if 'a'<=i<='z':
            i=chr(ord(i)-32)
        result+=i
    print(result)
    
  7. 输入一个小于1000的数字,产生对应的学号

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

    str1=input('请输入1000以内的整数:')
    result = 'py1901'+(3-len(str1))*'0'+str1
    print(result)
    
  8. 输入一个字符串,统计字符串中非数字字母的字符的个数

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

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

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

    str1=input('请输入一个字符串:')
    result=''
    for index1,i in enumerate(str1):
        if index1==0 or index1 ==len(str1)-1:
            i='+'
        result+=i
    print(result)
    
  10. 输入字符串,获取字符串的中间字符

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

    str1=input('请输入一个字符串:')
    if len(str1)%2:
        a=int(len(str1)/2)
        print(str1[a])
    else:
        a=int(len(str1)/2)
        print(str1[a-1]+str1[a])
    
  11. 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

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

    str1='how are you? Im fine, Thank you!'
    str2='you'
    print(str1.find(str2))
    

    #方法二

	str1='how are you? Im fine, Thank you!'
	str2='you'
	for index1,item in enumerate(str1):
    	if item==str2[0]:
       		if str1[index1:index1+3]:
            	print(index1)
            	break
	else:
    	print('输入不合法')
  1. 获取两个字符串中公共的字符

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

    str1=input('请输入第一个字符串:')
    str2=input('请输入第二个字符串:')
    a=set(str1)
    b=set(str2)
    print('公告字符有:',a&b)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值