字符串
由 ' , " , ''' , """ 括起来的内容就是字符串,
字符串是不可变的数据类型,无论执行任何操作,原字符串都不会改变,每次操作都会返回新字符串
str的索引和切片
str索引
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s = "伊丽莎白鼠" print(s[0]) #第一个 print(s[1]) print(s[2]) print(s[3]) print(s[4]) print(s[-1]) #倒数第一个 print(s[-2]) print(s[-3]) print(s[-4]) print(s[-5])
str切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#切片,[起始位置:结束位置],顾头不顾尾,从左往右切 s = "伊丽莎白鼠" print(s[1:3])#从1切到2 print(s[1:])#从1切到末尾 print(s[:3])#从头切到3 print(s[:])#从头切到尾 print(s[-3:-1])#还是从左往右切出 莎白 #可加入步长来控制切片方向 print(s[-1:-3:-1])#步长为-表示反方向,从右往左切 print(s[1:4:2])#步长2表示每两步取一个
str的相关操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# s = "al1ex is a gay and Wu傻sir is A gay too" # s1 = s.capitalize() # 把首字母变成大写 # print(s1) # s2 = s.lower() # 小写 # print(s2) # s3 = s.upper() # 大写 # print(s3) # s4 = s.swapcase() # 大小写互换 # print(s4) # s2 = "БBß" # 俄美德 # print(s2) # print(s2.lower()) # print(s2.casefold()) # s5 = s.title() # 把每个单词的首字母大写 # print(s5) # s = "sb" # s1 = s.center(10, "*") # 强行使用*在原字符串左右两端进行拼接. 拼接成10个单位 # print(s1) # s = " alex is a gay " # s1 = s.strip() # 默认去掉空格. 空白\t \n # print(s1) # username = input("请输入用户名:").strip() # password = input("请输入密码:").strip() # if username == 'alex' and password =="123": # print("成功") # else: # print("失败") # s = "sb alex wusir sb sb taibai taibai sb" # print(s.strip("sb")) # 可以指定要去掉的内容 # s = "泰坦尼克号, 西虹市首富, 小猪佩奇, 冒险王" # s1 = s.replace("冒险王", "西西里的美丽传说") # s2 = s.replace("佩奇", "wusir") # print(s2) # # s = "alex_wusir_taibai_ritian" # s1 = s.replace("_","") # print(s1) # s8 = "sylar_alex_taibai_wusir_eggon" # # s9 = s8.replace("i", "sb", 2) # 换两次 # # print(s9) # # lst = s8.split("taibai") # 切完的结果是一个列表. 列表中装的是字符串. 用什么切. 就会损失掉什么 # print(lst) # s = """我家大门常打开 # 开放怀抱等你 # 后面是什么歌词 # 我忘了""" # lst = s.split("\n") # print(lst) # s = "我今天下午要去吃饭饭" # lst = s.split("我今天下午要去吃饭饭哈哈哈") # 没切 # print(lst) # s = "我叫%s, 我今年%s了, 我喜欢%s" % ("周杰伦", "40", "昆凌") # print(s) # s = "我叫{}, 我今年{}了, 我喜欢{}".format("周杰伦", "40", "昆凌") # print(s) # s = "我叫{0}, 我今年{1}了, 我喜欢{2}".format("周杰伦", "40", "昆凌") # print(s) # s = "我叫{name}, 我今年{age}了, 我喜欢{hobby}".format(hobby="周杰伦", age="40", name="昆凌") # print(s) # s = "alex is a gay" # print(s.startswith("tory")) # 以xxx开头 # print(s.endswith("girl")) # 以xxx结尾 # s = "I have a dream. I want to kill you!" # 都可以进行索引范围 # print(s.count("dream")) # 计算a在字符串中出现的次数 # print(s.find("a")) # 查找xxx在字符串中出现的位置. 只找第一次出现的位置, 没有就返回-1 # print(s.index("z")) # 当字符串不存在的时候. 报错 # s = "abcdefg1@" # print(s.isdigit()) # %d # print(s.isalpha()) # 字母 # print(s.isalnum()) # 是否由数字和字母组成 # s = "壹仟贰佰五十六萬拾" # print(s.isnumeric()) # 字符串长度, python的内置函数len(), int(), bool(), str(), type() # s = "娃哈哈可口可乐" # print(len(s)) # 字符串中的字符的个数 # s = "王小利刘能赵四" # # # 对字符串进行遍历. # n = 0 # while n < len(s): # print(s[n]) # n = n + 1 # # # 迭代 # for c in s: # charactor # print(c)
str查找
s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔." ret1 = s13.startswith("sylar") # 判断是否以sylar开头 print(ret1) ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开 print(ret2) ret3 = s13.endswith("语⾔") # 是否以'语⾔'结尾 print(ret3) ret4 = s13.endswith("语⾔.") # 是否以'语⾔.'结尾 print(ret4) ret7 = s13.count("a") # 查找"a"出现的次数 print(ret7) ret5 = s13.find("sylar") # 查找'sylar'出现的位置 print(ret5) #只找第一次出现的位置 如果没有返回-1 ret8 = s13.index("sylar") # 求索引位置. 注意. 如果找不到索引. 程序会报错 print(ret8) ret7 = s13.find("a", 8, 22) # 切⽚找 print(ret7)
str 条件判断
# 条件判断 s14 = "123.16" s15 = "abc" s16 = "_abc!@" # 是否由字⺟和数字组成 print(s14.isalnum()) print(s15.isalnum()) print(s16.isalnum()) # 是否由字⺟组成 print(s14.isalpha()) print(s15.isalpha()) print(s16.isalpha()) # 是否由数字组成, 不包括⼩数点 print(s14.isdigit()) print(s14.isdecimal()) print(s14.isnumeric()) # 这个⽐较⽜B. 中⽂都识别. print(s15.isdigit()) print(s16.isdigit())
计算字符串长度
s18 = "我是你的眼, 我也是a" ret = len(s18) # 计算字符串的⻓度 print(ret) # 注意: len()是python的内置函数. 所以访问⽅式也不⼀样. 你就记着len()和print()⼀样就⾏
str 迭代
#迭代 #while循环 s = "abcde" n = 0 while n < len(s): print(s[n]) n = n + 1 #for 循环 for c in s: print(c)
笔记
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# s = "alex is a gay" # s1 = s.capitalize() #把首字母变成大写 # print(s1) # s = "Alex is A Gay" # s1 = s.lower()#全部变小写 # print(s1) # s = "ALEX IS A GAY" # s1 = s.upper()#全部变大写 # print(s1) # s = "Alex is A Gay" # s1 = s.swapcase()#大小写互换 # print(s1) # s = "alex is a gay" # s1 = s.title() #把每个单词的首字母变成大写 # print(s1) # #居中 # s = "sb" # s1 = s.center(10,"*")#强行使用*在原字符串两端进行拼接,拼成10个单位 # print # #去空格 # s = " alex is a gay " # s1 = s.strip()#默认去掉左右两端空格,空白\t \n # print(s1) # #去空格实例 # username = input("请输入用户名:").strip()#防止用户在两端不小心输入空格 # password = input("请输入密码:").strip() # if username == "helen" and password == "789": # print("登录成功") # else: # print("用户名或密码错误") # #指定要去掉的内容 # s = "sb alex sb is sb" # print(s.strip("sb"))#去掉两端sb # s = "海王,情圣,寒战" # s1 = s.replace("寒战","赤道")#把"寒战"替换成"赤道" # print(s1) # s = "abababab" # s1 = s.replace("a","c",3)#用c替换a,替换三次 # print(s1) # #split 切割,切完的结果是一个列表,列表中装的是字符串 # s1 = "a-b-c-d" # lst = s1.split("-")#用什么切,就丢掉什么 # print(lst) # #切\n,去掉换行 # s = """好好学习 # 天天向上 # 每天进步一点点""" # lst = s.split("\n") # print(lst) # lst# 格式化输出 # s12 = "我叫%s, 今年%d岁了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法 # print(s12) # s12 = "我叫{}, 今年{}岁了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化 # print(s12) # s12 = "我叫{0}, 今年{2}岁了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置 # print(s12) # s12 = "我叫{name}, 今年{age}岁了, 我喜欢{singer}".format(name="周杰伦", singer="周润发", age=28) # 指定关键字 # # print(s12) # s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔." # ret1 = s13.startswith("sylar") # 判断是否以sylar开头 # print(ret1) # ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开 # print(ret2) # # ret3 = s13.endswith("语⾔") # 是否以'语⾔'结尾 # print(ret3) # ret4 = s13.endswith("语⾔.") # 是否以'语⾔.'结尾 # print(ret4) # # ret7 = s13.count("a") # 查找"a"出现的次数 # print(ret7) # # ret5 = s13.find("sylar") # 查找'sylar'出现的位置 # print(ret5) #只找第一次出现的位置 如果没有返回-1 # # ret8 = s13.index("sylar") # 求索引位置. 注意. 如果找不到索引. 程序会报错 # print(ret8) # # ret7 = s13.find("a", 8, 22) # 切⽚找 # print(ret7) # # 条件判断 # s14 = "123.16" # s15 = "abc" # s16 = "_abc!@" # # 是否由字⺟和数字组成 # print(s14.isalnum()) # print(s15.isalnum()) # print(s16.isalnum()) # # 是否由字⺟组成 # print(s14.isalpha()) # print(s15.isalpha()) # print(s16.isalpha()) # # 是否由数字组成, 不包括⼩数点 # print(s14.isdigit()) # print(s14.isdecimal()) # print(s14.isnumeric()) # 这个⽐较⽜B. 中⽂都识别. # print(s15.isdigit()) # print(s16.isdigit()) # s18 = "我是你的眼, 我也是a" # ret = len(s18) # 计算字符串的⻓度 # print(ret) # # 注意: len()是python的内置函数. 所以访问⽅式也不⼀样. 你就记着len()和print()⼀样就⾏ # #迭代 # #while循环 # s = "abcde" # n = 0 # while n < len(s): # print(s[n]) # n = n + 1 # # #for 循环 # for c in s: # print(c)
得出变量中xx的索引位置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = "ahjdjfahk" #输出name变量中"a"所在索引位置 index = 0 for c in name: if c == "a": print (index) index += 1
作业
实现⼀个整数加法计算器(两个数相加):
如:content = input("请输⼊内容:") 用户输⼊:5+9 或5+ 9 或5 + 9,然后进
⾏分割再进⾏计算。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
content = input("请输入内容:") content = content.replace(" ","")#去掉空格 lst = content.split("+") # 用+切割. 切割的结果是list print(int(lst[0]) + int(lst[1]))
#计算⽤户输⼊的内容中有⼏个整数(以个位数为单位)。
# 如:content = input("请输⼊内容:") # 如fhdal234slfh98769fjdla
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
count = 0 content = input("请输⼊内容:") for c in content: if c.isdigit(): count += 1 print(count)
输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字,
其它字符共出现了多少次,并输出出来
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
content = input("请输入一句话:") daxie = 0 xiaoxie = 0 shuzi = 0 other = 0 for c in content: if c.isupper(): daxie += 1 elif c.islower(): xiaoxie += 1 elif c.isdigit(): shuzi += 1 else: other += 1 print(daxie, xiaoxie, shuzi, other)