内容正文:
3.1字符串基本操作导学案
班级: 姓名:
【基础知识】
1、字符是各种文字和符号的总称,包括国家文字、标点符号、图形符号、数字等。字符集是多个字符的集合,字符集种类较多,常见有ASCII字符集、GB2312字符集、GBK字符集、BIG5字符集、GB18030字符集、Unicode字符集等。其中,UTF-8编码是国际通用的编码,以1个字节表示英语字符(兼容ASCII),以3个字节表示常见汉字,对全世界所有国家需要用到的字符都进行了编码。
2、字符串标志:一对单引号、双引号、三引号,字符串长度不包括引号在内。
3、空串"" :不包含任何字符的串。
4、空格串" " :由空格组成的串,其长度为空格的个数。
【任务一】创建字符串
a = "ABCabc123" ; b = "Abc12" ; c = "Abc34" ; d = "Abc 4"
len("ABC abc 123")= __________ len("ABC@abc/123")= __________
len("ABC@abc派森")= __________
【结论】无论是一个数字、英文字母、标点或者空格,还是一个汉字,都按____个字符处理。
【任务二】比较字符串大小
if a > b:
print(f'{a} > {b}')
else:
print(f'{a} <= {b}')
运行程序后输出结果是:______________________________________________________
注意:f-string是python3.6新引入的一种字符串格式化方法。f-string在形式上是以f或F修饰符引领的字符串(f’xxx’或F’xxx’),以大括号{}标明被替换的字段,其本质上并不是字符串常量,而是一个运行时求值的表达式。
if b > c:
print(f'{b} > {c}')
else:
print(f'{b} <= {c}')
运行程序后输出结果是:______________________________________________________
if c > d:
print(c>d)
else:
print(c<=d)
运行程序后输出结果是:______________________________________________________
【结论】常用字符大小排序____________________________________________________
【任务三】提取子串(字符串切片)
s="Hello World" #教材P65 注意含头不含尾
①s[-5:-1] =_____________ s[-5:]=_____________ s[-1:-5:-1]=_____________ s[:-1]=_____________ s[:]=_____________
s[::1]=_____________ s[::-1]=_____________
②判断回文串:假如s="Hello olleH" ,则中间位置mid=len(s)//2=_____________
s[:mid]=_____________ s[-mid:]=_____________
【结论】s[:mid]作用是提取字符串s的_____________,s[-mid:]作用是提取字符串s的_____________。
③将字符串s="Hello World" 改为"Hello Python" ,填空s[________]="Python"。
笔记:__________________________________________________________________________
【练习】字符串变量s="Hang zhou Ya Yun",如果将字符串变量s中的字符"z"改为大写"Z",下列操作可行的是( )
A、s=s[0:5]+"Z"+s[6::] B、s[5]="Z" C、s[6]="Z" D、s=s[1:5]+"Z"+s[7::]
【任务四】子串判断 (用in运算实现)
a = "ABCabc123" ; b = "Abc12"
if a[-3:-1] in b: # a[-3:-1] 等价于 "ABCabc123"[-3:-1]
print(f'{a[-3:-1]}是{b}的子串')
运行程序后输出结果是:______________________________________________________
a = "ABCabc123"
print("AC" in a)
运行程序后输出结果是:______________________________________________________
【任务五】字符串连接
a = "ABCabc123" ; b = "Abc12" ; ans=a+b
print("连接后的字符串为:",ans)
运行程序后输出结果是:______________________________________________________
a = "ABCabc123" ; b = "Abc12" ; ans=b+a
print("连接后的字符串为:",ans)
运行程序后输出结果是:______________________________________________________
【常用方法1】find() 寻找子串的位置
x.find(y)功能:返回子串y在x中出现的首字符下标,如果未找到,返回-1。
a = "ABCabc123";b = "Abc12"
print(a.find(b[0])) 输出结果是:_______________
print(a.find(b[:3])) 输出结果是:_______________
print(b.find(a[4:6])) 输出结果是:_______________
拓展:index()方法功能与find()相同,不同之处在于若查询字符不在字符串中会报错。
【常用方法2】upper() lower() 大小写转换
a = "ABCabc123";b = "Abc12"
print(a.upper()) 输出结果是:_______________
print(b.lower()) 输出结果是:_______________
print("A".islower()) #islower判断是不是小写字母 输出结果是:_______________
print("A".isupper()) #isupper判断是不是大写字母 输出结果是:_______________
print("A".isdigit()) #isdigit判断是不是数字 输出结果是:_______________
判断ch变量是不是字母的if条件表达式书写:__________________________________
判断ch变量是不是数字的if条件表达式书写:__________________________________
【常用方法3】replace()替换字符串
x.replace(old,new)功能:返回新的字符串
x="is is is is"
print(x.replace("is","was")) 输出结果是:_______________
print(x.replace("is","was",3)) 输出结果是:_______________
问题来了:字符串s="Hello World" 用replace改为"Hello Python"?
_______________________________________________________________________________
【常用方法4】split()切分字符串转成列表
x.split(str,num)功能:以str为分隔符(默认分隔符为空格)切片x,如有num,仅分隔num个子串,结果放在列表中。
a = "I like Python" ; b = a.split(" ")
print(b)
运行程序后输出结果是:_________________
将语句修改为 b = a.split(" ",1) 运行程序后输出结果是:_________________
将语句修改为 b = a.split() 运行程序后输出结果是:_________________
将语句修改为 b = a.split("") 运行程序后输出结果是:_________________
【常用方法5】join()连接序列转成字符串
str.join(x)功能:以str为分隔符,将x中所有元素合并为一个新的字符串。b=['I', 'like', 'Python']
a = ''.join(b) #没有分隔符
print(a)
运行程序后输出结果是:_________________
b=['I', 'like', 'Python']
a = '→'.join(b)
print(a)
运行程序后输出结果是:_________________
b="行成于思毁于随"b=['I',' ','like',' ','Python']#增加空格
a = ''.join(b) #没有分隔符
print(a)
运行程序后输出结果是:_________________
c = '.'.join(b)
print(c)
运行程序后输出结果是:_________________
【常用方法6】: strip()
功能:默认去除首尾的空格,也可以指定去除特殊字符。
a = " I like Python "
b = a.strip()
print(b)
运行程序后输出结果是:_________________
【综合应用】split()、join()、strip()方法
#综合应用1:读取"cj.txt"文件,将每行数据转换成1个子列表追加到列表a中。
f=open("cj.txt","r",encoding="utf-8")#以只读方式打开文件 "r"=read
a=[]
line=f.readline() #从文件中读取一行
while line: #从文件中读取到数据
line=line.strip() #把末尾的"
"去掉
b=______________ #把空格字符去掉,变成包含3个字符串的子列表
a.append(b) #append()方法用于在列表末尾添加新的对象
line=f.readline()#从文件中读取下一行
f.close() #关闭文件
print(a)
print()
#综合应用2:将列表a转换成字符串(逗号为分隔符)重新写入到"cj_new.txt"文件中。
filename="cj_new.txt" #写入文件的文件名为"cj_new.txt"
with open(filename,"w") as fp: #以写入的方式打开文件 "w"=write
for i in a:
cj_new=____________
fp.write(cj_new+"
") #"
"作用是什么?
【回文字符串拓展】
方法二:直接利用字符串反转命令[::-1],直接反转原字符串,再与原串比较。
s=input("请输入一个字符串:")
s1=___________
if s==s1:
print("yes")
else:
print('no')
方法三:用L、R左右双指针扫描左右两侧元素比较,若s为回文字符串返回True,否则返回False
def fun_1(s):
L, R = 0, len(s) - 1
while ___________:
if s[L] != s[R]:
return ___________
L, R = ______________________
return ___________
s = input("请输入一串字符:")
print(fun_1(s))
方法四:用单指针扫描左侧元素与右侧元素比较,若s为回文字符串返回True,否则返回False
def fun_2(s):
n = len(s)
for i in range(n//2):
if ___________:
return False
return __________
s = input("请输入一串字符:")
print(fun_2(s))
【拓展】统计数字和
#编写Python程序,从键盘输入任意字符串s,统计s中数字字符串的数值和。
例如输入"ab123dr34fg9de",则输出166,即123+34+9=166。
第 1 页 共 3 页
学科网(北京)股份有限公司
#方法一:逐个字符处理,累乘相加。
s = "ab123dr34fg9de"
sum = 0
t = 0
for c in s:
if "0" <= c <= "9":
t = _______________ #累乘相加
else:
sum += t
t = 0
sum += t # 加上末尾的数字串
print(sum)
# 方法二:提取子串拼接
s = "ab123dr34fg9de"
sum = 0程序运行后,方法二会报错,如何优化程序?
t = ""
for c in s:
if "0" <= c <= "9":
t = t + c
else:
sum += ______
t = ""
sum += int(t) # 加上末尾的数字串
print(sum)
$$