Python基础—“字符串”练习 2021-11-21
1,根据完整的路径从路径中分离文件路径、文件名及扩展名。
import ospath="C:\\Users\\malihua\\x1.jpg"
basename=os.path.basename(path)
dir,ext=os.path.splitext(path)
print(f"路径:{dir}")
print(f"文件名:{basename}")
print(f"扩展名:{ext}")

2,获取字符串中汉字的个数。
def str_count(str):count_hanzi=0for i in str:if "\u4E00" <= i <= "\u9FA5":count_hanzi+=1return count_hanzis = "马利华 I Love you 王龙"
print(str_count(s))

3,将字母全部转换为大写或小写
ls = "MaLiHua I love you "
ls1 = ls.lower()
ls2 = ls.upper()
print(ls1)
print(ls2)

4,根据标点符号对字符串进行分行
s = input("输入字符串:")
for i in range(0 ,len(s)):if s[i] == "."or s[i] =="," or s[i]=="!" or s[i]==";":print("")else:print(s[i],end = "")

5,去掉字符串数组中每个字符串的空格
ls= [" H E L L O ! ","ma li hua "," I love you "]
ls1 = []
for i in range(0,len(ls)):ls1.append(ls[i].replace(" ",""))
print(ls1)

6,随意输入你心中想到的一个书名,然后输出它的字符串长度。
s = input("你喜欢的书名:")
print("{}的书名长度是{}".format(s,len(s)))

7,两个学员输入各自最喜欢的游戏名称,判断是否一致,如
果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输
出你们俩喜欢不相同的游戏。
s1 = input("你喜欢的游戏名字:")
s2 = input("他最喜欢的游戏名字:")
if s1 == s2:print(f"你们喜欢的游戏是:{s1}")
else:print("你最喜欢的游戏是:{}".format(s1))print("他最喜欢的游戏是:{}".format(s2))

8,上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?
s1 = input("你喜欢的游戏名字:")
s2 = input("他最喜欢的游戏名字:")
s1 = s1.upper()
s2 = s2.upper()
if s1 == s2:print(f"你们喜欢的游戏是:{s1}")
else:print("你最喜欢的游戏是:{}".format(s1))print("他最喜欢的游戏是:{}".format(s2))

9,让用户输入一个日期格式如“2008/08/08”,将输入的日期格式转换为“2008-8-8”.
s = input("请输入日期,格式如2008/02/02:")
ls = s.replace("/","-")
print(f"转换后的日期格式:{ls}")

10,接收用户输入的字符串,将其中的字符进行排序(升序)
并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
s = input("请输入你的字符串:")
ls = list(s)
ls.sort()
ls.reverse()
s = ""
for i in range(0,len(ls)):s += ls[i]
print(f"逆序输出的是:{s}")

11,接收用户输入的一句英文,将其中的单词以反序输出,
“hello c sharp”→“sharp c hello”
s = input("请输入字符串:")
ls = s.split(" ")
ls.reverse()
s = ""
for i in range(0,len(ls)) :s +=ls[i] + " "
print(f"反序输入的单词是:{s}")

12,从请求地址中提取出用户名和域名
http://www.163.com?userName=admin&pwd=123456
s = "http://www.163.com?userName=admin&pwd=123456"
ls = s.split("/")
s1 = ls[2]
ls2 = s1.split("?")
print("域名是:{}".format(ls2[0]))
s1 = ls2[1]
ls3 = s1.split("&")
s1 = ls3[0]
ls4 = s1.split("=")
print("用户名是:{}".format(ls4[1]))

13,有个字符串数组,存储了10个书名,书名有长有短,
现在将他们统一处理,若书名长度大于10,则截取长度8的
子串并且最后添加“…”,加一个竖线后输出作者的名字。
ls = ["我的世界没能和你在一起","遥远的老天爷","红尘往市我与你同在天涯","活着","白鹿原之青青草原112"]
##10个书名太多了,我只存了几个
dir = {"我的世界没能和你在一起":"马利华","遥远的老天爷":"马儿","红尘往市我与你同在天涯":"小马","活着":"萧红","白鹿原之青青草原112":"张"}
for i in range(0,len(ls)):s = ls[i]if len(s) > 10:s = s[0:9]+"...——"+str(dir[ls[i]])ls[i] = s
print(ls)

14,让用户输入一句话,找出所有"呵"的位置。
s = input("请输入一段话!")
ls = []
for i in range(0,len(s)):if s[i] == "呵":ls.append(i)print("呵的位置是:{}".format(ls))

15,让用户输入一句话,找出所有"呵呵"的位置。
s = input("请输入一段话!")
ls = []
for i in range(0,len(s)-1):if s[i] == "呵" and s[i+1] =="呵":ls.append(i)print("呵呵的位置是:{}".format(ls))
##也可以直接index(“呵呵”)

16,让用户输入一句话,判断这句话中有没有邪恶, 如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**
s = input("请输入字符串:")
print("邪恶消失后:{}".format(s.replace("邪恶","**")))

17,如何判断一个字符串是否为另一个字符串的子串
s = input("请输入字符串A:")
s1 = input("请输入需要判断的字符串B:")
flag = True
if s.find(s1) != -1:flag = False
if flag:print("字符串B:{}不在A{}内".format(s1,s))
else:print("字符串B:{}在A{}内".format(s1,s))

18,如何验证一个字符串中的每一个字符均在另一个字符串中出现过
s = input("请输入字符串A:")
s1 = input("请输入需要判断的字符串B:")
flag = True
for i in range(0,len(s1)):if s.find(s1[i]) == -1:flag = False
if flag:print("字符串B:{}的所有元素在A{}内".format(s1,s))
else:print("字符串B:{}不是所有元素都在A{}内".format(s1,s))

19,如何随机生成无数字的全字母的字符串
import string
import random
s = string.ascii_letters
s1 = ""
for i in range(1,20):s1 += random.choice(s)
print(s1)

20,如何随机生成带数字和字母的字符串
import string
import random
s = string.ascii_letters + string.digits ##前为生成字母,后为生成数字
s1 = ""
for i in range(1,20):s1 += random.choice(s)
print(s1)

21,如何判定一个字符串中既有数字又有字母。
import string
s = input("输入需要判断的字符串:")
if (s.isalnum()and not s.isalpha()) and not s.isdigit():print("字符串{}里包含数字和字母".format(s))
else:print("字符串{}里并不是既包含字母又包含数字".format(s))

22,字符串内的字符排序(只按字母序不论大小写)
s = input("请输入字符串")
s1 = s.upper()
ls = list(s1)
ls.sort()
s2 = ""
for i in range(0,len(ls)):s2 += ls[i]
print(s2)

23,判断一个字符是否是回文字符串。(面试题)
“1234567654321”
“上海自来水来自海上”
def is_plalindrome(content):"""通过双指针判断一个字符串是否是回文字符串"""for i in range(len(content)//2):if content[i] != content[len(content) - 1 - i]:return Falsereturn Trueif __name__ == '__main__':msg = "123454321"res = is_plalindrome(msg)if res:print("是一个回文字符串")else:print("不是一个回文字符串")

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
