#字符串
##概念:
###1是基础的数据类型
###2 是一个容器型的数据,里面每一个单位都是字符。
###3 特点: 有序,有索引,与列表,元组一样,(字符串元素不能直接进行修改)
##定义:
###1 定义空字符串
string = ""
s = str()
###2 定义非空字符串
string ="123"
s = str(123)
#"""1234""" 这是长字符串也是多行注释
##取值
###1 根据索引取值:字符串名字[索引]
##切片
###1 字符串名[起始位置:结束位置:步长]
1 起始位置:开始取值位置可以取到,是索引
2 结束位置:结束取值位置不能取到,是索引
3 步长: 取值间隔,(2)是隔一个取一个:可以是负值
###2 字符串名[:]
1 起始默认是索引0
2 终止默认是字符串长度
3 步长默认是1
##加法和乘法
###1 使用+号,拼接字符串
s = "123"
a = "456"
q = s + a
print(q)
#结果:123456
###2 使用*号,字符串翻倍
s = "123"
q = s * 3
print(q)
#结果:123123123
##成员判断
###1 使用in,判断字符串是否在父字符串中
str1 = "蜘蛛侠-pate-123"
if "蜘蛛" in str1:
print("字符串中有蜘蛛")
# 结果:字符串中有蜘蛛
###2 使用not in,判断不在里面
str1 = "蜘蛛侠-pate-123"
if "0" not in str1:
print("里面没有0")
#结果:里面没有0
##字符串方法
###1 index():获取子字符串的首字符的索引,有多个重复取第一个;可以取到起始位置,取不到终止位置:当找不到时会报错
l = "q, w, e, r, o, o, t, y"
index1 = l.index("e")
print(index1)
#结果:6
index2 = l.index("o", 3, 8)
print(index2)
#结果:报错
###2 find():与index()用法相同查找元素索引,找不到不会报错,会返回-1
a = "a,s,c,n,d,s,n,s,d,l,a,s,c,n,a,s"
i = a.find("a")
print(i)
# 结果:0
q = a.find("1")
print(q)
# 结果:-1
###3 count():计算子字符串在原字符串中出现的个数
e = "年年岁岁花相似,岁岁年年人不同"
print(e.count("年"))
# 结果:4
###4 split():分割字符串,返回一个列表,当不填写参数,默认分割空格,\t,\n 等…可以使用符号或字符进行分割,分割后,用于分割的字符消失,没分割的部分都放入列表中,可以指定分割的最大数
q =' "明眸皓齿""楚楚动人""美轮美奂"'
w = q.split()
print(w)
q1 = q.split("楚", 2)
print(q1)
#结果:['"明眸皓齿""楚楚动人""美轮美奂"']
#[' "明眸皓齿""', '', '动人""美轮美奂"']
###5 strip():默认去掉首位的空格,可以去掉字符串首尾的指定字符
q2 = " q,w,b,a,e,w,k,f,a,c,b\n"
q = q2.strip()
print(q)
print(q2.strip()+input())
"""
结果:q,w,b,a,e,w,k,f,a,c,b
键盘输入值:123
q,w,b,a,e,w,k,f,a,c,b123 b后\n换行符被默认去除
"""
###6 replace():替代,第一个参数是旧字符,第二个参数是新的字符
a1 = "飞流直下三千尺,疑是银河落九天"
s1 = a1.replace("九", "33")
print(s1)
#结果:飞流直下三千尺,疑是银河落33天
#注意:字符串的元素不能进行修改
###7 upper():将小写转换成大写
a3 = "a,a,a,a,a"
print(a3.upper())
#结果:A,A,A,A,A
###8 lower():将大写转换为小写
a4 = "AAAA"
print(a4.lower())
#结果:aaaa
###9 join(): 拼接字符串,将序列拼接进指定字符串,这个字符串会将序列的每个元素进行分隔
list3 = ['你', '好', '吗']
s = "+".join(list3)
print(s)
#结果:你+好+吗
##format()方法
###1,拼接字符串
name = "曹操"
say = "挟天子以令诸侯"
print("姓名:{0} 主要事迹:{1}".format(name, say))
print("姓名:{n} 主要事迹:{s}".format(s=say, n=name))
print(f"姓名:{name} 主要事迹:{say}")
"""
结果:
姓名:曹操 主要事迹:挟天子以令诸侯
姓名:曹操 主要事迹:挟天子以令诸侯
姓名:曹操 主要事迹:挟天子以令诸侯
"""
###2.拼接浮点数
q = 1.1
# .4f: 保留浮点数后4位
print(f"补税:{q:.4f}")
#结果:补税:1.1000
###3.带符号 +
print(f"补税:{13.5:+.2f}")
#结果 补税:+13.50
###4.不带小数点,四舍五入
print(f"{6.5689:.0f}")
#结果:7
###5. 拼接整数,10d,占10个位置
age = 79
print(f"年龄: {age:10d}")
#结果:年龄: 79
###6.位数不够进行补位
age = 79
print(f"年龄:{age:0>5d}")
print(f"年龄:{age:0<5d}")
#结果
# 年龄:00079
# 年龄:79000
###7. 百分数格式化
# 百分数格式化
gdp = 0.1516
print(f"国内生产总值:{gdp:2%}")
#结果:国内生产总值:15.160000%
###8,调位置
name = "曹操"
print(f"{name:>10}")
print(f"{name:<10}")
print(f"{name:^10}")
"""
结果:
曹操
曹操
曹操
"""
##判断str()
###1.isalpha(): 判断是否为纯字母, 是纯字母结果为True,否则为False
s = "sbaASD"
if s.isalpha():
print("纯字母")
#结果:纯字母
###2.isdigit(): 判断是否为纯数字, 是纯数字结果为True, 否则为False
str2 = "123456"
if str2.isdigit():
print("纯数字")
#结果:纯数字
###3. isalnum(): 判断字符串是否符号, 没有符号为True, 有符号为False
str3 = "abc123の汉字"
if str3.isalnum():
print("是")
else:
print("不是")
#结果:是
###4. isupper(): 判断是否全部字母为大写
str4 = "ABCEFG"
if str4.isupper():
print("都是大写")
#结果:都是大写
###5. islower(): 判断是否全部字母为小写
str5 = "abcd"
if str5.islower():
print("都是小写")
#结果:都是小写