字符串方法
##拼接
1.
a = “你”
b = “好”
print(a + b) 你好
###2.字符串拼接(join) 值的中间部分 得到一个新的字符串 join是字符串独有的方法
data = “好的”
result = “ok”.join(data)
print(result) 好ok的
data = [“汤圆”,“饺子”]
result = “”.join(data)
print(type(data)) <class ‘list’>
print(type(result)) <class ‘str’>
“”.join()可以完成数据类型的转换,转换成字符串
##格式化字符串
name = “{}喜欢玩水”.format(“郭家萁”)
print(name) 郭家萁喜欢玩水
data = “{}和{}的职业有法师、刺客…”
result = data.format(“英雄联盟”,“王者荣耀”) 如果有多个同类别插入,可以多加几个中括号
##关键字传参
data = “英雄联盟和王者荣耀的职业有{h0}、{h1}、{h2}…”
result = data.format(h1=“射手”,h0=“战士”,h2=“辅助”) 传多传少都会报错,一个萝卜一个坑 用参数传可以不考虑顺序
##数字格式化
print(“{:.2f}”.format(3.1415926)) 3.14 .2f 保留两位小数 .3f 三位
print(“{:0>2d}”.format(5)) 05 数字补任意数(1-9) 填充左边
print(“{:2>3d}”.format(5)) 225
print(“{:12>5d}”.format(5)) 报错 121212125 超出范围
右边补充只需将>改为<
##右对齐 左对齐 中间对齐
print(“{:>10s}”.format(“ni”))
print(“{:<10s}”.format(“hao”))
print(“{:^10s}”.format(“呀”))
#字符串拓展方法
##公共方法
1.获取数据长度
name = “小弟弟”
print(len(name)) 3
###2.索引,获取字符串中某个字符串的值
foods = “玉米、包子、粥”
print(foods[0]) 玉
print(foods[-1]) 粥 取最后一位
print(foods[len(foods)-1]) 粥 索引中计算长度取最后一位
##案例 循环字符串所有的字符
content = “长江以北”
index = 0 # 索引
while index < len(content): #content len能够直接打印字符串的长度 0 < 4
char = content[index] #index 作为索引条件 content[0] [1] [2] [3]
print(char)
index = index + 1 # 计数器控制循环
##逆序打印
content = “长江以北”
index = -1 # 索引
while index >= -len(content): # content len能够直接打印字符串的长度 -1 >= -4
char = content[index] #index 作为索引条件 content[-1] [-2] [-3] [-4]
print(char)
index = index - 1 # 计数器控制循环
##切片
###获取字符串中n个连续的字符的值
name = “你是风儿我是沙”
n3 = name[1:3]
print(n3) # 是风 1是索引 取2到3的值
###[start,stop,step] 开始 结束 歩长
####开始:当以字符串的左端(字符串的开头)为起点时,索引是从0开始计数,第一个字符为索引为0,第二个字符为1,以此类推。。。
####结束:当以字符串的右端开始(字符串的末尾)为起点时,索引是从-1开始计数,依次为-1、-2、-3。。。
####步长:默认为1,2.跨过几位数取几位数
name = “你是风儿我是沙,缠缠绵绵到天涯”
print(name[0:20]) # 如果取值范围大于实际则全部取出并且不会报错
print(len(name)-1) # 14
print(name[len(name)-1]) # 涯
print(name[0:])
print(name[0::]) # 默认截取全
部的数据 从左边开始,可以是无限数
print(name[:-1]) # 左闭右开
print(name[0:len(name)]) # 你是风儿我是沙,缠缠绵绵到天涯
print(name[len(name):-2]) # 不适用
print(name[0:15])
##for循环 for i(变量) in 可迭代对象: iterable 可以被循环打印的对象 整数不是可迭代的对象
for x in content: # 相当于把content赋值给i
print(x)
案例 判断用户输入的值中有多少个字符“a”(不区分A,a)
num = 0
content = input(“请输入内容:”)
for i in content:
print(i)
if i.upper() == “A”:
print(“已经找到了”)
num += 1
print(num)
message = “你输入的内容中A/a一共有{}个”.format(num)
print(message)
##案例:break continue
data = “像我这么优秀的人,本该灿烂过一生”
for item in data:
print(item)
if item == “人”:
break # 到人后直接退出
data = “像我这么优秀的人,本该灿烂过一生”
for item in data:
if item == “人”:
print(“进入if判断”)
continue # 使用continue跳过 人
print(item) # 像我这么优秀的进入if判断,本该灿烂过一生
##练习
###1. 写代码实现判断用户输入的值否以 “al"开头,如果是则输出 “是的” 否则 输出 “不是的”
user_input = input(“请输入:”)
if user_input.startswith(“al”):
print(“是的”)
else:
print(“不是的”)
###2. 写代码实现判断用户输入的值否以"Nb"结尾,如果是则输出 “是的” 否则 输出 “不是的”
user_input = input(“请输入:”)
if user_input.endswith(“Nb”):
print(“是的”)
else:
print(“不是的”)
###3. 将 name 变量对应的值中的 所有的"l"替换为 “p”,并输出结果
name = “all”
new_name = name.replace(“l”,“p”,2)
print(new_name)
###4. 写代码实现对用户输入的值判断,是否为十进制小数(isdecimal),如果是则转换为整型并输入,否则直接输出"请输入数字”
user_input = input(“请输入:”)
if user_input.isdecimal():
print(int(user_input))
else:
print(“请输入数字”)
###5. 对用户输入的数据使用"+“切割,判断输入的值是否都是数字?
user_input = input(“请输入:”)
a = user_input.split(”+“,)
print(a)
print(user_input.isdecimal())
###6. 写代码实现一个整数加法计算器(两个数相加)
a = int(input(“请输入第一个整数:”))
b = int(input(“请输入第二个整数:”))
sum = a + b
print(sum)
###7.需求:提示用户输入:5 +9或5+ 9或5 + 9,计算出两个值的和(提示:先分割再转换为整型,再相加)
user_name = input(“请输入5 +9或者5+9或者5 + 9:”)
if user_name == “5+9”:
new_user_name = user_name.split(”+“,2)
a = int(new_user_name[0])
b = int(new_user_name[1])
sum = a + b
print(sum)
else:
new_user_name = user_name.split(” +",1)
print(new_user_name)
a = int(new_user_name[1])
b = int(new_user_name[0])
sum = a + b
print(sum)
###8. 补充代码实现用户认证。需求:提示用户输入手机号、验证码,全都验证通过之后才算登录成功(验证码大小写不敏感)
import random
code = random.randrange(1000,9999) # 生成动态验证码
print(code)
code = str(code)
a = int(input(“请输入电话号码:”))
b = (input(“请输入验证码:”))
c = b.upper()
if c == code:
msg = “欢迎登享学教育系统,您的验证码为:{},手机号为:{}”.format(c,a)
print(msg)
else:
print(“登陆失败,请重新登录。”)
###9. 补充代码实现数据拼接 !!!!!!!!!!!!!!!
把输入的值添加到 data_list 中,如:data_list = [“你好”,“欢迎来到英雄联盟”]
将所有的爱好通过符号 "、“拼接起来并输出
data_list = []
while True:
hobby = input(“请输入你的爱好(Q/q退出):”)
if hobby.upper() == ‘Q’:
break
else:
data_list.append(hobby)
result = “、”.join(data_list)
print(result)
###10.获取用户输入的字符判断他的数字的字符串中有几个数字(只考虑个位数)?例如 你的操作6666,有点秀这段字符串中有4个数字。
ls = “你的操作有点6666”
num = 0
for i in ls:
if i.isdecimal():
num += 1
print(num)
###11.有变量name = “Xiangxuejiaoyu “ 完成如下操作:
移除 name 变量对应的值两边的空格,并输出处理结果
判断 name 变量是否以 “Xi” 开头,并输出结果(用切片)
判断name变量是否以”yu”结尾,并输出结果(用切片)
将 name 变量对应的值中的 所有的”i” 替换为 “p”,并输出结果
将name变量对应的值中的第一个”a”替换成”p”,并输出结果
将 name 变量对应的值根据 所有的”x” 分割,并输出结果
将name变量对应的值根据第一个”u”分割,并输出结果
将 name 变量对应的值变大写,并输出结果
将 name 变量对应的值变小写,并输出结果
请输出 name 变量对应的值的第 2 个字符?
请输出 name 变量对应的值的前 3 个字符?
请输出 name 变量对应的值的后 2 个字符?
name = " Xiangxuejiaoyu”
name = name.strip()
print(name)
name = “Xiangxuejiaoyu”
if name[0:2] == “Xi”:
print(“Xi”)
else:
print(“不是的”)
name = “Xiangxuejiaoyu”
if name [-2:] == “yu”:
print(“yu”)
else:
print(“不是的”)
name = “Xiangxuejiaoyu”
name = name.replace(“i”,“p”,2)
print(name)
name = “xiangxuejiaoyu”
name = name.replace(“a”,“p”,1)
print(name)
name = “Xiangxuejiaoyu”
name = name.lower()
name = name.split(“x”,3)
print(name)
name = “Xiangxuejiaoyu”
name = name.lower()
name = name.split(“u”,1)
print(name)
name = “Xiangxuejiaoyu”
name = name.upper()
print(name)
#name = “Xiangxuejiaoyu”
name = name.lower()
print(name)
name = “Xiangxuejiaoyu”
print(name[1])
print(name[0:3])
print(name[-2:])
2.有字符串s = “123a4b5c”
s = “123a4b5c”
a = s[0:3]
b = s[3:6]
c = s[-1:]
d = s[-3:-8:-2]
print(a,b,c,d)
3.使用while和for循环字符串s = "asdfer"中每个字符
s = “asdfer”
for x in s:
print(x)
s = “asdfer”
num = 0
while num < 6:
print(s[num])
num += 1
4.使用while和for循环对s=”321”进行循环,打印的内容依次是:”倒计时3秒”,”倒计时2秒”,”倒计时1秒”,”出发!”。
s = “321”
for x in s:
if x == “3”:
print(“倒计时3秒”)
elif x == “2”:
print(“倒计时2秒”)
elif x == “1”:
print(“倒计时1秒”)
print(“出发!”)
s = “321”
num = 0
while num < 3:
if s[0] == “3” and num == 0:
print(“倒计时3秒”)
num += 1
elif s[1] == “2” and num == 1:
print(“倒计时2秒”)
num += 1
elif s[2] == “1” and num == 2:
print(“倒计时1秒”)
num += 1
else:
break
print(“出发!”)
5.使用while和for循环分别对字符串 message = “伤情最是晚凉天,憔悴厮人不堪言。” 进行打印。
message = “伤情最是晚凉天,憔悴厮人不堪言。”
for x in message:
print(x)
message = “伤情最是晚凉天,憔悴厮人不堪言。”
num = 0
while num < 16:
print(message[num])
num += 1
6.获取用户输入的内容,并计算前四位“l”出现几次,并输出结果
user_input = input(“请输入你想输入的内容:”)
num = 0
for x in user_input[0:4]:
if x == “l”:
print(x)
num += 1
data = “l总共出现了{}次。”.format(num)
print(data)
7.获取用户两次输入的内容,并将所有的数据获取并进行相加,如:
num1 = input(“请输入:”) # asdfd123sf2312
num2 = input(“请输入:”) # a12dfd183sf23
a = num1[5:8] + num1[11:14]
b = num2[1:3] + num2[6:9] + num2[11:13]
print(int(a) + int(b))