文章目录

  • 字符串(str)
  • 1 字符串的表示
  • 2 常见方法
  • 3 转换为字符串
  • 4 其他


字符串(str)

字符串,我们平时会用他来表示文本信息。例如:姓名、地址、自我介绍等。

1 字符串的表示

v1 = "包治百病"
v2 = '包治百病'
v3 = "包'治百病"
v4 = '包"治百病'
v5 = """吵架都是我的错,因为大家打不过。"""
# 三个引号,可以支持多行/换行表示一个字符串,其他的都只能在一行中表示一个字符串。

2 常见方法

Python中给属于字符串的所有的值都提供了一些功能(方法),从而可以快速对字符串进行一些方便的操作。

注意:这是字符串类型独有的功能,其他类型中没有此功能。

  1. 判断字符串是否以 XX 开头?得到一个布尔值
v1 = "叨逼叨的一天,烦死了" 
result = v1.startswith("叨逼") 
print(result) # 值为True
# 案例 
v1 = input("请输入住址:") 
if v1.startswith("北京市"):     
	print("北京人口") 
else:     
 	print("非北京人口")
  1. 判断字符串是否以 XX 结尾?得到一个布尔值
v1 = "叨逼叨的一天,烦死了" 
result = v1.endswith("烦死") 
print(result) # 值为False
# 案例 
address = input("请输入地址:") 
if address.endswith('村'):     
 	print("农业户口") 
else:     
	print("非农户口")
  1. 判断字符串是否为十进制数?得到一个布尔值
v1 = "1238871" 
result = v1.isdecimal() 
print(result) # True
# 案例 
v1 = input("请输入值:") 
v2 = input("请输入值:") 
if v1.isdecimal() and v2.isdecimal():     
    data = int(v1) + int(v2)     
    print(data)
else:     
    print("请正确输入数字")
  1. 去除字符串两边的 空格、换行符、制表符,得到一个新字符串
msg = " H e ll o啊,树哥 " 
data = msg.strip() 
print(data) # 将msg两边的空白去掉,得到"H e ll o啊,树哥"
# 案例 
code = input("请输入4位验证码:") 
data = code.strip() 
if data == "FB87":     
	print('验证码正确') 
else:     
	print("验证码错误")
  1. 字符串变大写,得到一个新字符串
msg = "my name is oliver queen" 
data = msg.upper() 
print(data) # 输出为:MY NAME IS OLIVER QUEEN
# 案例 
code = input("请输入4位验证码:") 
data = code.strip() 
value = data.upper() # value = code.strip().upper() 
if value == "FB87":     
	print('验证码正确') 
else:    
	print("验证码错误")
  1. 字符串变小写,得到一个新字符串
msg = "My Name Is Oliver Queen" 
data = msg.upper() 
print(data) # 输出为:my name is oliver queen
# 案例 code = input("请输入4位验证码:") 
value = code.strip().lower()
if value == "fb87":     
	print('验证码正确') 
else:     
	print("验证码错误")
  1. 字符串内容替换,得到一个新的字符串
data = "你是个好人,但是好人不合适我" 
value = data.replace("好人","贱人") 
print(value) # "你是个贱人,但是贱人不合适我"
# 案例 
video_file_name = "高清无码爱情动作片.mp4" 
new_file_name = video_file_name.replace("mp4","avi") 
final_file_name = new_file_name.replace("无码","步兵") 
print(final_file_name)
# 案例 
content = input("请输入评论信息") 
content = content.replace(,"**") 
content = content.replace(,"***") 
print(content)
  1. 字符串切割,得到一个列表
data = "xx|xxxx|xxxxx@qq.com" 
result = data.split('|') 
print(result) 
# 输出 ["xx","xxxx","xxxxx@qq.com"] 根据特定字符切开之后保存在列表中,方便以后的操作
# 案例:判断用户名密码是否正确 
info = "武沛齐|root"   # 备注:字符串中存储了用户名和密码 
user_list = info.split('|')    # 得到一个包含了2个元素的列表 [ "武沛齐" , "root" ] 
user = input("请输入用户名:") 
pwd = input("请输入密码:") i
f user == user_list[0] and pwd == user_list[1]:     
	print("登录成功") 
else:     
	print("用户名或密码错误")
  1. 字符串拼接,得到一个新的字符串
data_list = ["你","我","哈哈"] 
result = "干掉".join(data_list) 
print(result) 
# 输出:你干掉我干掉哈哈(通过`干掉`把列表中的值拼接起来)
  1. 格式化字符串,得到新的字符串
name = "{0}的喜欢干很多行业,例如有:{1}、{2} 等"
data = name.format("小明","学生","老师")
print(data) # 小明的喜欢干很多行业,例如有:学生、老师 等
name = "{}的喜欢干很多行业,例如有:{}、{} 等"
data = name.format("小明","学生","老师")
print(data) # 小明的喜欢干很多行业,例如有:学生、老师 等
name = "{name}的喜欢干很多行业,例如有:{h1}、{h2} 等"
data = name.format(name="小明",h1="学生",h2="老师")
print(data) # 小明的喜欢干很多行业,例如有:学生、老师 等

练习题

1. 写代码实现判断用户输入的值否以 "al"开头,如果是则输出 "是的" 否则 输出 "不是的"
2. 写代码实现判断用户输入的值否以"Nb"结尾,如果是则输出 "是的" 否则 输出 "不是的"
3. 将 name 变量对应的值中的 所有的"l"替换为 "p",并输出结果
4. 写代码实现对用户输入的值判断,是否为十进制小数(isdecimal),如果是则转换为整型并输入,否则直接输出"请输入数字"
5. 对用户输入的数据使用"+"切割,判断输入的值是否都是数字?
    提示:用户输入的格式必须是以+连接,如 5+9 、alex+999
6. 写代码实现一个整数加法计算器(两个数相加)
    需求:提示用户输入:5+9或5+9或5+9,计算出两个值的和(提示:先分割再转换为整型,再相加)
7. 写代码实现一个整数加法计算器(两个数相加)
    需求:提示用户输入:5 +9或5+ 9或5 + 9,计算出两个值的和(提示:先分割再去除空白、再转换为整型,再相加)
8. 补充代码实现用户认证。
    需求:提示用户输入手机号、验证码,全都验证通过之后才算登录成功(验证码大小写不敏感)
    import random
    code = random.randrange(1000,9999) # 生成动态验证码
    msg = "欢迎登录PythonAV系统,您的验证码为:{},手机号为:{}".format(code,"15131266666")
    print(msg)
    # 请补充代码
9. 补充代码实现数据拼接
    data_list = []
    while True:
        hobby = input("请输入你的爱好(Q/q退出):")
        if hobby.upper() == 'Q':
            break
        data_list.append(hobby) # 把输入的值添加到 data_list 中,如:data_list = ["小姨子","哥们的女朋友"]
    # 将所有的爱好通过符号 "、"拼接起来并输出

3 转换为字符串

以后的python开发中经常的用是:数字 转 为字符串类型。

number = 888
data = str(number)
print(data)

4 其他

字符串除了有上述那些字符串独有的功能以外,还有一个其他“公共的功能”,某些其他的类型也具有的功能。

  1. 获取字符串长度
name = "武沛齐" 
name_length = len(name) 
print(name_length) # 输出:3
nickname = "wupeiqi" 
length = len(nickname) 
print(length) # 输出:7
  1. 索引,获取字符串中某个字符的值。
name = "来做点py交易"
print( name[0] ) # 输出 来
print( name[1] ) # 输出 做
print( name[6] ) # 输出 易   (默认索引是从0向后逐步向后增加,索引超出最大范围会报错)
print( name[-1] ) # 输出 易  (如果索引为负值,则表示从后向前,-1表示最后一个)
print( name[-3] ) # 输出 y
print( name[len(name)-1]) # 输出 易
# 案例:循环字符串的所有字符
content = "长江以北晓峰最美山海关以外晓峰最帅"
index = 0
while index < len(content):
	char = content[index]
	print(char)
	index += 1
# 案例:循环字符串的所有字符
content = "你瞅啥"
index = -1
while index >= - len(content):
    char = content[index]
    print(char)
    index -= 1

练习题:获取用户输入的字符判断他的数字的字符串中有一个数字(只考虑个位数)?例如 你有点2,还特么有点666这段字符串中有4个数字。

  1. 切片,获取字符串中n连续的字符的值。
name = "你是风儿我是沙。不,我不是沙而是你爸"
print( name[0:2] ) # 输出:你是    (根据索引 `前`按开区间 `后`按闭区间,即:前取后不取)
print( name[2:5] ) # 输出:风儿我
print( name[2:])   # 输出:风儿我是沙。不,我不是沙而是你爸(后面不写表示到最后)
print( name[:6])   # 输出:你是风儿我是(前面不是表示从头开始)
print( name[2:-1]) # 输出:风儿我是沙。不,我不是沙而是你
print( name[2:-2]) # 输出:风儿我是沙。不,我不是沙而是
print( name[0:len(name)]) # 输出:你是风儿我是沙。不,我不是沙而是你爸
  1. 步长,相当于我们生活中的跳步选择数据。
name = "生活不是电影,生活比电影苦"
print( name[ 0:5:2 ] )   # 输出:生不电 【前两个值表示区间范围,最有一个值表示步长】
print( name[ :8:2 ] )    # 输出:生不电,活  【区间范围的前面不写则表示起始范围为0开始】
print( name[ 2::3 ] )    # 输出:不影活影  【区间范围的后面不写则表示结束范围为最后】
print( name[ ::2 ] )     # 输出:生不电,活电苦 【区间范围不写表示整个字符串】
print( name[ 8:1:-1 ] )  # 输出:活生,影电是不 【倒序】
print( name[ ::-1 ] )    # 输出:苦影电比活生,影电是不活生  【倒序】
  1. for循环
    想要循环显示字符串的每个字符,通过之前的 while循环 + 索引 可以实现,现在通过for循环则可以更方便的实现。
content = "三分天注定,七分靠滤镜"
for item in content:   
	print(item)
# 案例:判断用输入的值中有多少个字符 `a`(不区分大小写,即:A、a)
total_count = 0
content = input("请输入内容:")
for char in content:   
	if char.upper() == 'A':       
		total_count += 1
message = "您输入的内容中A/a共有{}个".format(total_count)
# 案例:break和continue也可以应用在for循环中
data = "像我这样优秀的人,本该灿烂过一生"
for item in data:   
    print(item)   
    if item == "人":       
        break
content = input("请输入内容:")
for char in content:   
	if char.upper() == 'A':       
		total_count += 1
message = "您输入的内容中A/a共有{}个".format(total_count)
# 案例:break和continue也可以应用在for循环中
 data = "像我这样优秀的人,本该灿烂过一生"
 for item in data:   
     print(item)   
     if item == "人":       
         break