字符串
#利用下标的正数、负数分别输出字符串的倒序**
a=input("请输入字符串")
i=len(a)-1
while i>=0:
print(a[i],end="")
i-=1
#第二种
a=input("请输入字符串")
i=-1
while i>=-len(a):
print(a[i],end="")
i-=1
#字符串切片
a="qwerty"
b=a[1:5:2]
#中括号里面的数依次分别代表了开始的位置,结束的位置,步长
print(b)# wr
#几种特殊情况
a="qwrtyu"
b=a[-1:-3:-1]
print(b)#uy
#这种情况是从后往前排序的,步长要为负,不然不输出结果
a="1234567890wert"
b=a[8:-1:1]
print(b)#90wer
#类似于上面的情况,虽然结束值是负数,但由于下标的特性,-1也代表了正数的最后一个值,
所以步长必须为正,不然不会输出**
#倒序输出
a="qwert"
b=a[::-1]
print(b)# trewq
#字符串遍历、拼接、重复
#遍历
a="asdfgh"
for i in a:
print(i,end=" ")
#结果:a s d f g h
#拼接、重复
a="123"
b="456"
c=a+b
print(c)#123456
d=a*3
print(d)#123123123
a,b="12"
print(a,b)#1 2
a,b,c,d="1234"
print(a,b,c,d)#1 2 3 4
#这里只能一一对应
#字符串函数
#find 显示查找的第一次出现的时候首个字符的下标,若不存在返回-1
a="qwertyuioer"
i=a.find("er")
print(i) #2
j=a.find("45")
print(j) #-1
#rfind 从右向左查找
k=a.rfind("er")
print(k) #9
#index 大致与find相似,但如果查找的字符串不存在会报错
a="1234ert"
b=a.index("34")
print(b)
c=a.index("45")
print(c)#报错,ValueError: substring not found
#count 统计所查找的字符串出现的个数
a="123456qwertqwerqwer"
b=a.count("qwer")
print(b)
#partition 指定一个字符,从指定的字符处分割成多个字符,但只对从左向右第一个指定的字符有效
a="123-1234-1234"
b=a.partition("-")
print(b) #('123', '-', '1234-1234')
#split splitlines
#split
a="12345-12345-12345"
b=a.split("-")
print(b) #['12345', '12345', '12345']
#splitlines
a="1234\n-234\n-23423"
b=a.splitlines()
print(b)
#对比
a="1234\n-234\n-23423"
c=a.split("\n")
print(c)
#maxsplit ,表示最大的分割次数
a="1-1-2-3-4"
b=a.split("-",maxsplit=2)
c=a.split("-",maxsplit=4)
print(b) #['1', '1', '2-3-4']
print(c) #['1', '1', '2', '3', '4']
#replace 将一个字符换成另一个字符,原字符串不变,生成一个新的字符串
a="qwert"
b=a.replace("q","2")
print(b) #2wert
#maketrans \translate
a="521"
x=str.maketrans("12345","uoeri")
print(x) #{49: 117, 50: 111, 51: 101, 52: 114, 53: 105}
y=a.translate(x)
print(y) #iou
#center 居中函数
a="qwer"
b=a.center(10)
print(b,end="$") # qwer $
#ljust \rjust\zfill 数字10代表的是填充完的总长度,
特殊符号代表的用什么填充的,zfill用0填充
a="qwer"
b=a.ljust(10,"$") # 左填充
print(b)
c=a.rjust(10,"¥") # 右填充
print(c)
d=a.zfill(10) # 0填充
print(d)
#strip、lstrip、rstrip
a=" qwe "
b=a.strip()#删除所有空格
print(b,end="*")#qwe*
print()
a=" qwe "
c=a.lstrip()#删除左边的空格
print(c,end="*")#qwe *
print()
a=" qwe "
d=a.rstrip()#删除右边的空格
print(d,end="*")# qwe*
#括号里有什么就删除什么
a="$$$123$$$"
b=a.lstrip("$")
c=a.rstrip("$")
print(b)
print(c)
#位置参数 format
a="姓名{} 年龄{}"
b=a.format("张三",19)
print(b)
a="{1} {0}".format("python","hello")
print(a)
#关键字参数
a="我叫{name},今年{age}岁,性别{sex}".format(age=19,name="张三",sex="男")
print(a)
#填充 特殊符号$ * &表示的用什么填充,^表示居中,<表示左对齐,>表示右对齐
a="我叫{:$^8}".format("张三")
print(a)
b="我叫{:*<8}".format("张三")
print(b)
c="我叫{:&>8}".format("张三")
print(c)
#精度和进制
a="长度{:.2f},宽度{:.3f},高度{:.0f}".format(1234.234,12.2345,34.43)
print(a)
a="二进制{:b},八进制{:o},十六进制{:x}".format(10,10,10)
print(a,)
#格式化
a="我叫%s,今年%d岁,考了%f分,成才率89.6%%"%("张三",16,98.4)
print(a)
#upper\lower\swapcase
a="werQWE"
b=a.upper()#全部变为大写
print(b)
c=a.lower()#全部变为小写
print(c)
d=a.swapcase()#大小写相互转化
print(d)
#title:将每个单词的首字母大写 capitalize:将第一个单词的首字母大写
a="what is your name"
b=a.title()
print(b)#What Is Your Name
c=a.capitalize()
print(c)#What is your name
#\t制表符(默认间隔四个字符)
a="what\tis\tyour\tname"
print(a)#what is your name
#isalpha 判断字符串是否全是字母 iadigit判断字符串是否全是数字
isalnum判断字符串是否全是字母和数字组成
a="qwer"
b="qwe123"
c="1234"
print(a.isalpha())#True
print(b.isalpha())#False
print(c.isdigit())#True
print(b.isdigit())#False
print(c.isalnum())#True
print(b.isalnum())#True
#isupper islower istitle
a="qweQWE"
b="qwer"
c="QWE"
d="Wfd"
a1=a.isupper()
a2=a.islower()
a3=a.istitle()
print(a1,a2,a3)#False False False
b1=b.islower()
c1=c.isupper()
d1=d.istitle()
print(b1,c1,d1)#True True True
#startswith endswith分别用来判断字符串的开头结尾是否是指定的字符串
a="1234qwer"
b=a.startswith("1234")#True
print(b)
c=a.endswith("qwer")#True
print(c)
#help() dir()
a="qwert12344wert"
print(dir(a))
print(help(a.replace))
#encode 编码 \decode解码
a="qwe12"
b=a.encode("utf-8")
print(b) #b'qwe12'
c=b.decode("utf-8")
print(c) #qwe12
#\转义字符
a="123\ndf\tasdf\'adf\"as\\"
print(a)
#结果:123
df asdf'adf"as\
#R或r元字符串 可以使转义字符失效
a=r"sdf\\sdf\nf\t"
print(a)#sdf\\sdf\nf\t
作业
#1.判断一个数是否是回文数。例如:输入:121,输出也是121,像这样的数就是回文数
num =input("请输入一个数")
if num==num[::-1]:
print(num,"是回文数")
else:
print(num,"不是回文数")
# 2.查找字符串中每个字符最后出现的位置。
a="黑化肥发挥会发灰,灰化肥发黑会发挥"
for index,char in enumerate(a):
if index ==a.rindex(char):
print((index,char))
# 3.‘2018-11-12’去掉‘-’输出
s = '2018-11-12'
s1=s.replace("-","")
print(s1)
# 4.统计数字,字母,下划线个数
a=input("请输入字符串:")
sz=0
zm=0
xhx=0
for i in a:
if i>="a" and i<="z" or i>="A" and i<="Z":
zm+=1
elif i>="0" and i<="9":
sz+=1
elif i=="_":
xhx+=1
print("数字",sz,"字母",zm,"下划线",xhx)
# 3.编写一个函数,接收传入的字符串,统计大写字母的个数、小写字母的个数、数字的个数、
# 其它字符的个数,并以元组的方式返回这些数,然后调用该函数。
def hanshu(x):
list=[]
dx=0
xx=0
sz=0
other=0
for i in range(x.__len__()):
if x[i]>="A" and x[i]<="Z":
dx+=1
elif x[i]>="a" and x[i]<="z":
xx+=1
elif a[i]>="0" and a[i]<="9":
sz+=1
else:
other+=1
list.append(dx)
list.append(xx)
list.append(sz)
list.append(other)
print("列表",list)
return tuple(list)
a=input("输入")
y=hanshu(a)
print(y)