最近在做一些python练习题,所以,趁此机会,把字符串的常考题目,以及常用方法做一个梳理
题目一:统计各个字母,数字,空格,以及其他特殊字符出现的次数 s = "1qe89cty dgh4ue54 w637 ud !@#"
题目二:任意给出一串字符串,找出该字符中每一个字符出现的次数 s1 = "aabbbccccddddddd"
题目三:统计每种字符出现的次数,同样用字典表示出来 s2 = “aaa123444yyy32222222”
题目四:回文数:从左到右,从右到左都是一样的,就是回文数,12321是回文数,12345不是
先看看最后的输出结果
且看下列的代码分析过程
""" 题目一:统计各个字母,数字,空格,以及其他特殊字符出现的次数 """ s = "1qe89cty dgh4ue54 w637 ud !@#" # 先初始化,定义变量为0,从0开始统计 int_count = 0 str_count = 0 space_count = 0 other_count = 0 # 开始对字符串进行遍历 for i in s: if i.isdigit(): int_count += 1 elif i.isalpha(): str_count += 1 elif i == " ": space_count += 1 else: other_count += 1 print("数字有{}个;字母有{}个;空格有{}个;其他特殊字符有{}个".format(int_count, str_count, space_count, other_count)) # 最后打印结果如下 数字有9个;字母有13个;空格有8个;其他特殊字符有3个 """ 题目二:任意给出一串字符串,找出该字符出现的次数 比如:s1 = "aabbbccccddddddd" ;这道题可以采用count方法更简单 """ s1 = "aabbbccccddddddd" # 定义一个空字典,用来装结果 dict_s1 = {} # 开始遍历 for i in s1: dict_s1[i] = s1.count(i) print(dict_s1) # 最后打印结果:{'a': 2, 'b': 3, 'c': 4, 'd': 7} ### 其实这道题可以改编一下,把以上两道题综合起来,给出任意字符串 s2 = “aaa123444yyy32222222”;统计每种字符出现的次数,同样用字典表示出来 s2 = "aaa123444yyy3222mn2222" # 同样的拿一个空字典来装 dict_s2 = {} # 开始遍历 for j in s2: # 从左到右走第一轮,如果是第一次出现,就直接放进去 if j not in dict_s2: dict_s2[j] = 1 # 如果是第二次出现,就说明开始装的字典里面已经有一个和这个重复,那就同样的继续加1 else: dict_s2[j] += 1 print(dict_s2) # 最后打印结果:{'a': 3, '1': 1, '2': 8, '3': 2, '4': 3, 'y': 3, 'm': 1, 'n': 1} # 其实,第三题的方法同样适用于第二题,也可以做到 """ 题目四,回文数 """ def number(num2): # 先把这个数字转化为字符串,再转化为列表 li1 = list(str(num2)) # 转化为列表后,再将列表反转 li2 = li1[::-1] # 再将列表中的元素,当作字符,一个一个拼接起来,再把字符串类型强制转化成整数类型 # 定义一个空的字符串,专门用来开始拼接的 str_1 = '' r = int(str_1.join(li2)) # 将最后转化的数字与最开始的num2进行比较,如果相等,就是回文数,如果不相等,就不是 if r == num2: return True else: return False # 因为最后返回的是布尔类型,所以,得打印出来才知道是True还是False print(number(12321)) # 打印结果为 True print(number(12345)) # 打印结果为 False
从以上几个题目中,我们大概捋一下思路;第一题,它只是用来判断哪些是数字,哪些是字母,哪些是空格,哪些是特殊字符,所以,这里需要用到的两个方法,isdigit()和isalpha();其中,isdigit()是用来判断是否为数字,isalpha()用来判断是否为字母,这个是每一个下标元素本来自带的方法,要学会合理的运用起来;第二题和第三题,基本上是同一个题,但是,第二题运用的是count()计数方法,第三题用的是if判断,虽然也是count++,但是感觉第三题的方法适用更广。第四题,涉及到的知识点就是,数据类型之间的强制转换,join()拼接方法。以上题目具有代表性,较为经典,建议多多练手,总结解题的规律。