day10 - 字符串 - 学习总结

day10 - 字符串

01 review
1. 什么是字符串(str)
02 字符编码
1. 编码表 - 保存每个字符对应的编码值的表
1)ASCII 表(美国码)
  • 总共128个字符;

  • 位置:数字在前,大写字母在中(A 对应的编码值是65),小写字母在后(a 对应的编码值是97);

  • 大写字母和小写字母之间有其他符号;

2)Unicode(万国码、统一码) — (Python使用)
  • Unicode 是 ASCII 表的扩展(包含 ASCII 表);

  • Unicode包含世界上所有国家、所有民族的所有语言对应的符号(总共六万多符号);

  • 中文编码范围:4e00 ~ 9fa5

2. 字符编码值在Python中的应用
1)编码值相关函数
  • chr( 编码值) - 获取指定编码值对应的字符
print(chr(97),chr(65))    #  a A
# 打印出所有的小写字母
for x in range(97,97+26):
    print(chr(x))         #  a,b,c,...x,y,z

    
# 打印出所有的中文
# 在程序中直接使用所有十六进制数:0x数字
for x in range(0x4e00,0x9fa5+1):
    print(chr(x),end='')
  • ord( 字符 ) - 获取指定字符对应的编码值
print(ord('徐'),ord('丹'))   #  24464 20025
# 练习:将输入的小写字母转换成对应的大写字母
# m -> M
lower=input('请输入一个小写字母:')
upper=chr(ord(lower)-32)
print(upper)
2)编码字符:\u 四位的十六进制编码值

每一个字符在字符串中表示的时候有两种表示方式:a. 直接写字符 b. 写编码字符

# 打印两个一
str1='一\u4e00'
print(str1)    # 一一

# 判断输入的字是否是中文
x = '狗'
print('\u4e00'<=x<='\u9fa5')    #  True
注意:把编码当成数值来用,加0x,当成字符来用,加\u。
03 字符串基本操作
1. 查 - 获取字符串中的元素(字符)
- 字符串获取字符的方法和列表获取元素的方法一样
1) 查单个

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

2. 切片
str1='you see see,one day day!'
print(str1[0:-3:2])    #   yuseseoedyd
print(str1[4:-1:-1])   #   ''(空字符串)
print(str1[-4:])       #   day!
3. 遍历

str1=‘字符串’

语法一:for x in ‘str1’

​ print(x)

语法二: for index in range(len(‘str1’))

​ print ( index, str1 [index] )

语法三:for index ,item in enumrate(‘字符串’)

​ print ( index ,item )

2. 相关操作
1) +、 *
2)比较运算
# 字符串是有序的,所以顺序不同不相等
print('abc'=='bac')        #    False
# 字符串比较大小(比较的是第一个不相等的字符的编码值的大小)
print('amn'>'EFKmmp')      #    True
# 英文是ASCII表,Unicode是ASCII表的扩展,ASCII表在Unicode表里也处于最前面的位置。
print('你好'>'hello')      #    True
判断字符的性质:
是否是数字:'0'<=x<='9'
是否是大写字母:'A'<=x<='Z'
是否是字母:'a'<=x<='z'  or 'A'<=x<='Z'
是否是中文:'\u4e00'<=x<='\u9fa5'
# 练习:统计字符串str1中数字的个数
str1='ans随机数23sjjkjs8902-==28'
count=0
for x in str1:
    if '0'<=x<='9':
        count +=1
print(count)                   # 8
3) in 和not in

语法:字符串1 in 字符串2 - 判断字符串2中是否存在字符串1

print('a' in 'abc')             # True
print('bc' in 'abc')            # True
print('ac' in 'abc')            # False
print(10 in [10,20])            # True
print([10,20] in [10,20,30])    # False

str1='how are you'
print('y' in str1)              # True
print('you' in str1)            # True
04 相关函数
1. len(字符串) - 统计字符串中字符的个数(转义字符的长度为1,1个空格长度也是1)
2. str(数据) - 将指定数据转换成字符串类型

1)所有类型的数据都可以转换成字符串;

2)转换的时候直接在数据的打印值外面加引号;

05 字符串格式化
  • 字符串格式化主要是用来解决字符串中部分内容变化的情况。

问题:创建‘xxx今年xx岁!’格式的字符串。

方法1:使用+做字符串拼接,变化的部分不是字符串,需要做类型转换,如本题中的age。

# 问题: 1.麻烦    2. 会存在格式问题
name=input('请输入你的姓名:')
age=int(input('请输入你的年龄:'))
message=name+'今年'+str(age)+'岁!'
print(message)

方法2:使用格式字符串(=包含格式占位符的字符串)
格式字符串:包含格式占位符的字符串 %(数据1,数据2,数据3…)
说明:

1)格式占位符:

% s - 字符串占位符;可以给任何类型的数据占位

%d - 整数占位符;可以给任何数字占位

%f - 浮点数占位符;可以给任何数字占位(%.Nf - 控制保留N位小数)

2)( )中的数据和前面字符串中的占位一 一对应

问题:创建‘xxx今年xx岁,月薪:xx元。’格式的字符串

name=input('请输入你的姓名:')
age=int(input('请输入你的年龄:'))
money=float(input('请输入你的月薪:'))
message=' %s今年%d岁,月薪:%.2f元。'%(name, age, money)
print(message)    #    小米今年23岁,月薪:9000.00元。
方法3:f字符串(f-string) - 最常用!!!
语法:f ’ { 提供数据的表达式 } ’

f-string的使用原则:在字符串中用{ }来表达式字符串中变化的部分,{ }中表达式的值就是变化的内容。

# 变量和上面一致。
message=f'{name}今年{age},月薪:{money}元。'
print(message)
1) 使用灵活

# 求年薪
money=9000
message=f'年薪:{money*13}元'
print(message)

# 求最后一个学生的就业薪资
moneys=[5100,6200,7300,8400]
message=f'薪资:{moneys[-1]}元 '
print(message)
2)功能强大

a. 控制小数位数:f '{提供数据的表达式:.Nf } ’

b. 大数据分段显示:f '{提供数据的表达式:, } ’

money=29000
message1=f'月薪:{money:.2f}元'
message2=f'月薪:{money:,}元'
message3=f'年薪:{money*13:,.2f}元'
print(message1,message2,message3)

#  月薪:29000.00元 月薪:29,000元 年薪:377,000.00元

c. 百分比显示:{提供数据的表达式:.N%} (.N是保留小数的位数)

rate=0.236
message=f'增长率:{rate:.2%}'
print(message)         #   增长率:23.60%
# 拼接字符串练习:在字符串中所有的数字字符前插入一个加号
# 'am67函数=9km78==0'  ->  'am+6+7函数=+9km+7+8==+0'

str1='am67函数=9km78==0'
str2=''
for x in str1:
    if '0'<=x<='9':
        str2 +='+'+ x
    else:
        str2 +=x
print(str2)

输入一个小于1000的数字,产生对应的学号

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

num=56
study_num=f'py1901{num:0>3}'   

###
num:0>3,把num变为长度为3的字符串,不够的用0来填充;
0>3都可以改变为其他字符,0决定填充字符,3决定字符串长度, >决定填充方向;
若是>,填充在前,若是<,填充在后;若是^,填充在两侧。
###

rint(study_num)    #  py1901056
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值