遇到陌生网友问不知道怎么不区分大小写统计词频问题
题目是这样的:
将字母先全部转为小写,把特殊字符全部用空格代替,以空格分割,加入字典即可
fin=str(input("输入一个英文句子:")) for ch in fin: if 65<=ord(ch)and ord(ch)<=90: fin=fin.replace(ch,chr(ord(ch)+32))#大写通过ascall转小写 for ch in '"";!+-(),.[]{}<<>>:': fin=fin.replace(ch," ")#将特殊符号转为空格 words=fin.split()#split以空格为分割符 pac={}#定义一个空字典 for i in words: pac[i]=pac.get(i,0)+1#返回pac[key]因为唯一性可避免单词重复 k=0#统计总词汇 sum="" for i,j in pac.items():#字典二元组查找 k+=1 sum+=i+" " print('全部单词如下:\n',sum) print('共有{',str(k),'}个单词')
优化代码:将非字母的字符全部转为空格符号直接分割,简单直接,不用考虑特殊符号
words=str(input("输入一个英文句子:")) for ch in words: if ord(ch)>=65 and ord(ch)<=90:#大写字母对应的Ascall words=words.replace(ch,chr(ord(ch)+32))#大写通过Ascall转小写 if ord(ch)<97 or ord(ch)>122:#非小写字母对应的Ascall words=words.replace(ch,' ')#空格代替所有非小写字母 pac={}#定义一个空字典 for i in words.split(): pac[i]=pac.get(i,0)+1#返回pac[key]因为唯一性可避免单词重复 k=0#统计总词汇 sum='' for key in pac:#一元组查找 k+=1 sum+=key+' ' number={k}#不同单词数量的字典 print('全部单词如下:\n',sum) print('共有',number,'不同个单词')
基本上ok,想改的话加点自己的东西就好了
有时间我都会解答简单问题
睡觉,最后peace!