python统计字符串中字母出现次数代码实例
代码如下
dic=dict() d={} s=set() s='helloworld' (1)d=dict() forxins: ifxnotind.keys(): d[x]=1 else: d[x]=d[x]+1 print(d) (2)d2=dict() forxins: d2[x]=d2.get(x,0)+1 print(d2) (3)d3=dict() forxins: d3[x]=s.count(x) print(d3)
上面一共给出了三种方法,均是以字典的形式输出,但可以看出,通过第二三种的内置函数方法更简便
defcountchar(str): str=str.lower()#化成小写 ans=[] foriinrange(26):#列表赋初值26个0 ans.append(0) foriinstr: if(ord(i)>=ord('a')andord(i)<= ord('z')): ans[ord(i)-ord('a')]=ans[ord(i)- ord('a')]+1#统计个数 returnans if__name__=="__main__": str=input() print(countchar(str)) defcountchar(st):#定义数个数的函数 keys=[chr(i+97)foriinrange(26)]#生成26个字母的key列表 di=dict().fromkeys(keys,0)#赋给每个key初始值0 new=[]#建立一个新列表用于存放有序的key st=st.lower()#将所有输入的字符改为小写 forsinst:#遍历字符串 di[s]=st.count(s)#输出每个字符的个数,存放到字典里 defcountchar(str): str=str.lower()#化成小写 ans=[] foriinrange(26):#列表赋初值26个0 ans.append(0) foriinstr: if(ord(i)>=ord('a')andord(i)<= ord('z')): ans[ord(i)-ord('a')]=ans[ord(i)- ord('a')]+1#统计个数 returnans if__name__=="__main__": str=input() print(countchar(str)) defcountchar(st):#定义数个数的函数 keys=[chr(i+97)foriinrange(26)]#生成26个字母的key列表 di=dict().fromkeys(keys,0)#赋给每个key初始值0 new=[]#建立一个新列表用于存放有序的key st=st.lower()#将所有输入的字符改为小写 forsinst:#遍历字符串 di[s]=st.count(s)#输出每个字符的个数,存放到字典里 forkinkeys:#遍历keys,将其在di中的值添加到新列表,获得有序的26个字母的个数 new.append(di[k]) returnnew#返回存有26个字母个数的列表 if__name__=="__main__": st=input()#输入字符串 str1=""#定义一个空字符串 forsinst:#遍历输入的字符串 ifs.isalpha()!=0:#只有字母才添加到新字符串,标点忽略不计 str1+=s print(countchar(str1))#输出列表 forkinkeys:#遍历keys,将其在di中的值添加到新列表,获得有序的26个字母的个数 new.append(di[k]) returnnew#返回存有26个字母个数的列表 if__name__=="__main__": st=input()#输入字符串 str1=""#定义一个空字符串 forsinst:#遍历输入的字符串 ifs.isalpha()!=0:#只有字母才添加到新字符串,标点忽略不计 str1+=s print(countchar(str1))#输出列表
上面的两种方法也是输出字符串的字母出现次数,略有不同的是,这里它先设定了26个字母,并使其对应的初始值为0,然后统计字符串中的各字母出现次数,每个字母出现了多少次,即为其对应的初始值处的值。而没出现的字母,其对应的值则仍为初始值0
通过上述的几种方法,我们不难总结出解决这种问题的思路:从键盘随机输入一段字符串,然后循环遍历字符串,通过循环字符串中的每一个字符,统计各类字符出现的次数,循环遍历字符串
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。