2021-03-11

Str字符串

含义:
‘’’
字符串是容器型数据类型:将’’ 、""、""""""、’’’’’‘作为容器的标志,里面的每个符号就是字符串的元素.单个单引号或者单个双引号的字符串不能换行
不可变:不能增删改,只能产生新的字符串。
有序;有下标
元素:字符串的元素就是引号中的每一个基本符号,元素又叫字符,字符又分为普通字符和转移字符两种
‘’’
2.转义字符
‘’’
转义字符就是再特定的符号前加\让符号具备特殊的功能或者意义
\n - 换行,相当于Enther
\t - 水平制表符,相当于按tab
’ - 表示一个单引号
" - 表示一个双引号
\ - 表示一个反斜杠\

注意:转移字符的长度是1
‘’’

3.特殊的转义字符 - 编码字符
\u四位的十六进制数 - 表示4位的16进制数编码值对应的字符
message = ‘abc\u4e10—’
print(message) # abc丐—

4.字符编码
‘’’
1)字符编码
计算机再存储数据的时候只能存数字(存数字的二进制补码),文本符号是不能直接保存在内存中的。为了能够让计算机存储文本符号,
就给每个符号对应一个固定的数字,在保存符号的时候就去保存这个符号对应的数字,每个符号对应的数字就是这个符号的编码值。

2)编码表 - 记录每个符号对应的编码值的表
a:ASCll码表:
数字字符在字母前面,编码值从字符0- 字符9一次增加;
所有大写字母在小写字母前面:
大写字母和小写字母之间有间歇;
b:unicode编码表:
unicode编码表是ASCll码表的扩展,包含了ASCll码表码表中所有的符号
中文范围4E00-9FA5(16进制)
包含了所有国家所有民族的所有语言的符号(万国码)

‘’’

1.查 - 获取字符
字符串获取字符的方法和列表获取元素的方法一样
str1 = ‘home’
print(str1[1]) # 0

2.相关操作
1)+、*

2)== 、!=(两个字符串之间必须顺序元素一样才相等)

<、 >、 >=、 <=
两个字符串比较大小,比较第一对不相等字符的编码值大小,小写字母在大写字母后面。
‘’’
判断字符是否是小写字母:‘a’ <= char <= ‘z’
判断字符是否是大写字母:‘A’ <= char <= ‘Z’
判断字符是否是字母:‘a’ <= char <= ‘z’ or ‘A’ <= char <= ‘Z’
判断是否是数学字符:‘0’ <= char <= ‘9’
判断是否是中文字符:’\u4e00’ <= char <=’\u9fa5’
‘’’

str1 = ‘abc’
str2 = ‘XYZMN’
print(str1 > str2) # True

练习:统计字符串中数字字符的个数
str0 = ‘jsj28海事局389sjj–3sskk9jj’
count = 0
for x in str0:
if ‘0’ <= x <= ‘9’:
count+=1
print(count)

练习:提取字符中所有的中文字符
str2 = ‘aj好23l-数据–2啊’
new_str = ‘’ # 创建一个空字符串,把满足条件的加进去。利于保存起来
for x in str2:
if ‘\u4e00’ <= x <=’\u9fa5’:
new_str += x
print(new_str)

3)in 和 not in
字符 in 字符串 - 判断字符串中是否存在指定的字符
字符串1 in 字符串2 - 判断字符串2中是否存在字符串1(判断字符串1是否是字符串2的字串)

print(‘a’ in ‘abc’) # True
print(‘ab’ in ‘abc’) # True
print(‘ac’ in ‘abc’) # False 位置必须一样

4)
a.max、 min 、sorted
b.str
str(数据) - 将指定数据转换成字符串(所有类型的数据都可以转换成字符串,除此之外所有类型都能转的就是布尔值)
转换的时候直接在数据的打印值外面加引号
str(100) # 100
str([100, 200]) #’[100, 200]’

c.len - 获取字符串中字符的个数

3.r语法 - 让字符串中所有转义字符消失
字符串的最前面加R/r,能够让字符串中所有转移字符的功能小时,字符串中的每个符号都是普通字符

str = r’abc\n123’

1.字符串1.count(字符串2) - 返回字符串1中字符串2出现的次数
str1 = ‘how are you? i am fine,thank you’
print(str1.count(‘h’)) # 2
print(str1.count('you ')) # 2

2.字符串.join(序列) - 将序列中的元素用指定的字符串拼接产生一个新的字符串。(序列中的元素必须是字符串)
result = ‘+’.join(‘abc’)
print(result) # a+b+c

result = ‘And’.join(‘hello’) # hAndeAndlAndlAndo
print(result)

练习:将字符串无缝拼接在一个
num = [10, 20, 30 , 25, 6]
方法1:
result = ‘’
for x in num:
result += str(x)
print(result)

方法二:
result = ‘’.join([str(x)for x in num])
print(result)

3.字符串1.split(字符串2) - 将字符串1中所有字符串2作为切割点对字符串1进行切割,返回的是列表
str = ‘abc+123+xyz+mn’
result = str.split(’+’) # [abc, 123, xyz, mn]

str1 = ‘+abc+123+xyz++mn’ # 当切割点出现在边界,或者重复。会出现一个空串
result = str1.split(’+’)
print(result) # [’’, ‘abc’, ‘123’, ‘xyz’, ‘’, ‘mn’]

字符串1.split(字符串,N) - 将字符串1中前N个作为切割点

4.字符串1.replace(字符串2,字符串3) - 将字符串1中所有的字符串2全部替换成字符串3

str3 = ‘abc+123+xyz+mn’
result = str3.replace(’+’, ‘-’,1) # 将字符串中的+换成+ 后面控制次数
print(result)

进制数

计算机对于数学的使用主要4中进制:二进制、八进制、十进制和十六进制
1.十进制
‘’’
基数:0 ~ 9
进位:逢10进1
位权:10的次方数(从0开始) 123 ->310**0+2101+110**2
python表示:直接写

‘’’

2.二进制
‘’’
基数:0 ~ 1
进位:逢2进1
位权:2的次方数 100 - > 02**0+021+1*22 ==4
python表示:加前缀0b/0B
‘’’

3.八进制数
‘’’
基数:0 ~ 7
进位:逢8进1
位权:8的次方数
python表示:加前缀0o/0O
‘’’

4.16进制数
‘’’
基数:0 ~ 9,a~f
进位:逢16进1
位权:16的次方数
python表示:加前缀0x/0X

hex(97) # 查看进制数

‘’’
1)编码字符:\u4位的16进制编码值

2)编码相关的函数
a.chr(编码值) - 获取编码指定的字符
print(chr())
for x in range(0x4e00, 0x9fa5+1):
print(chr(x),end=’ ')
if x % 30 == 0:
print()

b.ord(字符) - 获取字符编码值 (字符用长度是1的字符串表示)
print(ord(‘佩’)) # 20329
print(hex(ord(‘佩’))) # 0x4f69

p = ‘z’
code = ord§ - 32
print(chr(code)) # 小写z换大写Z

作业

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

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

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

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

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

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

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

    name = str(input('请输入用户名:'))
    for x in name:
        if ('a' <= x <= 'z' or 'A' <= x <= 'Z'or '0' <= x <= '9' ) and 'A' <= name[0] <= 'Z':
            pass
        else:
            print('不合法')
            break
    else:
        print('合法')
    
    
  5. 输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串

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

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

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

    1.
    str = 'a2h2klm12+'
    print(str.upper() )
    2.
    
    
  7. 输入一个小于1000的数字,产生对应的学号

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

    Student = input('请输入1000以内学号:')
    l = len(Student)
    if l == 1:
        print('py190100'+Student)
    elif l == 2:
        print('py19010'+Student)
    elif l == 3:
        print('py1901'+Student)
    else:
        print('不符合规定,请重新输入:')
    
  8. 输入一个字符串,统计字符串中非数字字母的字符的个数

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

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

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

    str1 = str(input('请输入:'))
    print('+'+str1[1:-1]+'+')
    
  10. 输入字符串,获取字符串的中间字符

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

str = input('请输入字符串:')
l = len(str)
if l % 2:
    print(str[l//2])
else:
    print(str[l//2-1:l//2+1])

  1. 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

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


  1. 获取两个字符串中公共的字符

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

str = input('请输入字符串:')
str1 = input('请输入字符串:')
l = set(str)
h = set(str1)
print('公告字符有:', l & h)
embedcpp-2021-03是一个有关嵌入式C++编程的课程,于2021年3月举办。嵌入式C++编程是指在嵌入式系统中使用C++编程语言进行开发的一种方法。 在嵌入式系统中,资源通常是有限的,例如处理器速度、内存容量和存储空间等。因此,使用C++编程语言可以提供更高的灵活性和效率,帮助开发人员充分利用有限的资源。C++在嵌入式系统中的应用范围广泛,例如物联网设备、汽车电子和工业自动化等领域。 embedcpp-2021-03课程旨在向学员介绍嵌入式C++编程的基础知识和技巧。课程内容通常包括以下方面: 1. C++语法和特性:介绍C++的基本语法、面向对象编程和泛型编程等概念,以及C++11、C++14和C++17的一些新特性。 2. 嵌入式系统概述:了解嵌入式系统的基本特点、硬件和软件组成,以及与传统桌面开发的区别。 3. 低级编程:学习如何与硬件交互,包括使用寄存器、配置外设和处理中断等。还可以介绍使用汇编语言优化性能的技巧。 4. 内存管理:探讨嵌入式系统中的内存管理技术,包括堆栈和堆的使用、动态内存分配和对象生命周期管理等。 5. 实时操作系统(RTOS):介绍嵌入式系统中常用的实时操作系统,如FreeRTOS和µC/OS等,学习如何使用RTOS进行任务调度和资源管理。 除了理论知识,embedcpp-2021-03课程通常还包括实际的项目练习,以帮助学员将所学知识应用于实际场景。通过该课程,学员可以了解嵌入式C++编程的基础概念和实践技巧,为嵌入式系统开发提供了一定的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值