遇到陌生网友问不知道怎么不区分大小写统计词频问题
题目是这样的:
将字母先全部转为小写,把特殊字符全部用空格代替,以空格分割,加入字典即可
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!