内容正文:
任务4.1 字符串
统计文本中各类字符数目
4.1 字符串——统计各类字符数目
【任务描述】
小T需要协助导师统计某同学提交的一篇论文中中文、英文字母和数字的个数,以及空格字数等信息,作为初步判断论文在字数、篇幅上是否达到要求的依据。由于我们还未学习Python在文件处理中的应用,因此我们将文章作为字符串处理,并进行各类字符的统计。
4.1 字符串——统计各类字符数目
任务解决:
中文字数
英文字母个数
数字个数
空格数
其他字符个数
素养小课堂:
论文常用来进行科学研究和描述科研成果,包括毕业论文、学位论文、科技论文等。
论文一般由题名、作者、目录、摘要、关键词、正文、参考文献等部分组成,需遵循《论文写作规范国家标准》(GB7713-87)。毕业论文的撰写、答辩等是大学生必须完成的课程,论文也是大学学习成果的综合应用。因此,大学期间需做好学习规划,注重技能实践和积累,注重成果的转化,以完成高质量的毕业论文。
4.1 字符串——统计各类字符数目
4.1 字符串——统计各类字符数目
【任务分析】
(1)定义字符串。
(2)遍历字符串中的每一个字符,判断该字符的类型,并在相应的计数变量上加1。
(3)输出中文字数、英文字母个数和数字个数、空格数及其他字符个数。
4.1 字符串——统计各类字符数目
4.1.1 字符的编码
4.1.2 字符串的创建
4.1.3 字符串的常用方法
4.1.4 字符串的格式化
4.1.5 字符串任务实现——统计各类字符数目
4.1.3 字符串的格式化
4.1.3 字符串的格式化
字符串有哪些不同的输出格式?
%和format进行格式化
4.1.3 字符串的格式化
输出字符串:
"***同学年龄是**岁,他本学期英语成绩是**分。"
字符串
整型
浮点型
%s
%d
%f
"%s同学年龄是%d岁,他本学期英语成绩是%f分。"%('韩梅梅',18,95.5)
1.用%格式化
Python可用%实现字符串的格式化,用于较复杂的字符串格式输出,其基本用法是将一个值插入到另一个有格式符%s的格式字符串中。
格式符号 描述
%s 将对应数据转换为字符串
%c 将对应数据转换为ASCII 码字符
%f或%F 将对应数据十进制浮点数
%d 将对应数据十进制整数
%x 将对应数据十六进制整数
%o 将对应数据八进制整数
%e或%E 将对应数据转化为指数(基底写为e或E)
4.1.3 字符串的格式化
表 Python的字符串格式化符号
4.1.3 字符串的格式化
str%value
str是一个字符串,包含一个或者多个数据的格式化占位符;
value表示需要格式化的数据;
%表示执行格式化操作,即将str中的格式化符号替换为value。
(1)%字符串格式化的基本语法格式如下:
4.1.3 字符串的格式化
【例4-6】使用%格式化字符串。
strName='小T'
intAge=21
fltScore=94.55
#%s对应strName变量,%d对应intAge变量,%f对应fltScore变量
print("%s年龄是%d岁,他本学期英语成绩是%f分。"%(strName,intAge,fltScore))
小T年龄是21岁,他本学期英语成绩是94.550000分。
4.1.3 字符串的格式化
(2)指定最小输出宽度。
当使用格式化符号时,可以使用下面的语法格式指定最小输出宽度n。
% [n][格式符号]
4.1.3 字符串的格式化
【例4-7】指定最小输出宽度。
strName='小T'
intAge=21
#姓名指定宽度为10,年龄指定宽度为5
print("%10s年龄是%5d岁。"%(strName,intAge))
小T年龄是 21岁。
注意,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。
4.1.3 字符串的格式化
(3)指定对齐方式。
在默认情况下,print()输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python允许在最小宽度之前增加一个标志来改变对齐方式,支持的字符串格式化辅助标识如表所示。
格式符号 描述
- 指定左对齐
+ 表示输出的数字总要带着符号:正数带+,负数带-
0 表示宽度不足时补充0,而不是补充空格
%[-][+][0][格式符号]
4.1.3 字符串的格式化
【例4-8】指定对齐方式。
strName='小T'
intAge=21
#姓名指定宽度为10,年龄指定宽度为5,带符号,左边补0
print("%10s年龄是%+05d岁。"%(strName,intAge))
小T年龄是+0021岁。
注意,对于字符串,只能使用“-”标识,因为符号对于字符串没有意义,而补0会改变字符串的值。
4.1.3 字符串的格式化
(4)指定小数精度。
对于浮点数,Python允许指定小数点后的数字位数,即指定小数的输出精度。精度值需要放在最小宽度之后,中间用点号“.”隔开;也可以不写最小宽度,只写精度。具体的语法格式如下:
%m.nf 或者%.nf
m表示最小宽度,n表示输出精度,“.”不能省略,是必须存在的。
4.1.3 字符串的格式化
【例4-9】指定小数精度。
strName='小T'
fltScore=94.55
#最小宽度为8,小数点后保留3位,左边补0
print("%s本学期英语成绩是%08.3f分。"%(strName,fltScore))
#最小宽度为8,小数点后保留1位,带符号
print("%s本学期数学成绩是%+08.1f分。"%(strName,fltScore))
小T本学期英语成绩是0094.550分。
小T本学期数学成绩是+00094.5分。
4.1.3 字符串的格式化
即学即答:语句print('%d'%103.55)输出结果是( )。A.103 B.104C.103.55 D.104.00
2.用format函数格式化
(1)format函数基本格式
槽组字符串由字符串和槽组组成,用来控制字符串和变量的显示格式,
槽组用大括号“{}”表示,每个槽组对应format()中的相应参数。
"<槽组字符串>".format(逗号分隔的参数)
4.1.3 字符串的格式化
【例4-10】format()函数基本格式的使用。
strName="小T"
intAge=19
fltScore=94.5
#不指定位置,参数按默认顺序对应槽组
print("{}年龄是{}岁,他本学期大学英语成绩是{}分。".format(strName,intAge,fltScore))
#指定位置,参数按指定的顺序对应槽组
print("{0}年龄是{1}岁,他本学期大学英语成绩是{2}分,高等数学成绩也是{2}分。".format(strName,intAge,fltScore))
小T年龄是19岁,他本学期大学英语成绩是94.5分。
小T年龄是19岁,他本学期大学英语成绩是94.5分,高等数学成绩也是94.5分。
4.1.3 字符串的格式化
(2)用format()函数格式化数字
format函数槽组中,允许对数值型数据进行格式化。槽组内数字格式化的基本语法格式为:
冒号(:)是格式引导符,
冒号前面的数字表示format函数中参数的索引
冒号后面的信息是格式化的格式
如{0:5d}表示format中第一个参数按5位宽度输出,如果参数宽度大于5则按实际位数输出,否则输出右对齐、左边补空格、宽度为5的参数。
{数字:<填充字符><对齐方式><宽度>}
4.1.3 字符串的格式化
4.1.3 字符串的格式化
format()格式化数字的方法
数字 格式 输出 描述
"{:.2f}".format(3.1415) "{:.nf}".format(s) 3.14 保留小数点后n位小数
"{:+.2f}".format(3.1415) "{:+.nf}".format(s) +3.14 带符号保留小数点后n位小数
"{:6.2f}".format(3.1415) "{:m.nf}".format(s) 3.14 保留小数点后n位小数,宽度为m
"{:0>4d}".format(3) "{:0>nd}".format(s) 0003 数字左边补0,宽度为n
"{:<4d}".format(3) "{:x<nd}".format(s) 3xxx 数字右边补x,宽度为n
"{:4d}".format(13) "{:nd}".format(s) 13 右对齐,宽度为n
"{:<4d}".format(13) "{:<nd}".format(s) 13 左对齐,宽度为n
"{:^4d}".format(13) "{:^nd}".format(s) 13 中间对齐,宽度为n
"{:,}".format(1000000) "{:,}".format(s) 1,000,000 以逗号分隔的数字格式
"{:.2%}".format(0.25) "{:.n%}".format(s) 25.00% 百分比格式,保留两位小数
"{:.2e}".format(100000) "{:.ne%}’.format(s) 1.00e+09 指数计数法,保留两位小数
【例4-11】用format()函数格式化数字。
strName='小T'
intAge=19
fltScore=94.5
strName1='Peter'
intAge1=20
fltScore1=88
print("序号 姓名 年龄 成绩")
print("----------------------------------------------")
# 如果冒号(:)前有参数索引,全部槽组内设参数索引,否则全部不设索引
print("{:^8d}{:^8}{:<8d}{:6.2f}".format(1,strName,intAge,fltScore))
print("{:^8}{:^8}{:<8d}{:6.2f}".format(2,strName1,intAge1,fltScore1))
4.1.3 字符串的格式化
边学边练:1-10的十个数字,请将其转换为“0001.jpg”、“0002.jpg”、“0003.jpg”......“0010.jpg”输出。提示:十个连续自然数的产生,可以使用“for i in range(1,11)”语句实现。
$$