文章目录
- 字符串(str)
- 1 字符串的表示
- 2 常见方法
- 3 转换为字符串
- 4 其他
字符串(str)
字符串,我们平时会用他来表示文本信息。例如:姓名、地址、自我介绍等。
1 字符串的表示
v1 = "包治百病"
v2 = '包治百病'
v3 = "包'治百病"
v4 = '包"治百病'
v5 = """吵架都是我的错,因为大家打不过。"""
# 三个引号,可以支持多行/换行表示一个字符串,其他的都只能在一行中表示一个字符串。
2 常见方法
Python中给属于字符串的所有的值都提供了一些功能(方法),从而可以快速对字符串进行一些方便的操作。
注意:这是字符串类型独有的功能,其他类型中没有此功能。
- 判断字符串是否以 XX 开头?得到一个布尔值
v1 = "叨逼叨的一天,烦死了"
result = v1.startswith("叨逼")
print(result) # 值为True
# 案例
v1 = input("请输入住址:")
if v1.startswith("北京市"):
print("北京人口")
else:
print("非北京人口")
- 判断字符串是否以 XX 结尾?得到一个布尔值
v1 = "叨逼叨的一天,烦死了"
result = v1.endswith("烦死")
print(result) # 值为False
# 案例
address = input("请输入地址:")
if address.endswith('村'):
print("农业户口")
else:
print("非农户口")
- 判断字符串是否为十进制数?得到一个布尔值
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("请正确输入数字")
- 去除字符串两边的 空格、换行符、制表符,得到一个新字符串
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("验证码错误")
- 字符串变大写,得到一个新字符串
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("验证码错误")
- 字符串变小写,得到一个新字符串
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("验证码错误")
- 字符串内容替换,得到一个新的字符串
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)
- 字符串切割,得到一个列表
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("用户名或密码错误")
- 字符串拼接,得到一个新的字符串
data_list = ["你","我","哈哈"]
result = "干掉".join(data_list)
print(result)
# 输出:你干掉我干掉哈哈(通过`干掉`把列表中的值拼接起来)
- 格式化字符串,得到新的字符串
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 其他
字符串除了有上述那些字符串独有的功能以外,还有一个其他“公共的功能”,某些其他的类型也具有的功能。
- 获取字符串长度
name = "武沛齐"
name_length = len(name)
print(name_length) # 输出:3
nickname = "wupeiqi"
length = len(nickname)
print(length) # 输出:7
- 索引,获取字符串中某个字符的值。
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个数字。
- 切片,获取字符串中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)]) # 输出:你是风儿我是沙。不,我不是沙而是你爸
- 步长,相当于我们生活中的跳步选择数据。
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 ] ) # 输出:苦影电比活生,影电是不活生 【倒序】
- 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