出现最多次的字符 The Most Wanted Letter

出现最多次的字符 The Most Wanted Letter


上篇介绍的网站https://checkio.org/第一题就让我感受到了Python的魅力,也让我借着该题重温加深了很多知识点!现在贴出题目,我以及大神的解题。

题目

给你一个其中包含不同的英文字母和标点符号的文本,你要找到其中出现最多的字母,返回的字母必须是小写形式,
当检查最想要的字母时,不区分大小写,所以在你的搜索中 “A” == “a”。 请确保你不计算标点符号,数字和空格,只计算字母。

如果你找到 两个或两个以上的具有相同的频率的字母, 返回那个先出现在字母表中的字母。 例如 – “one”包含“o”,“n”,“e”每个字母一次,因此我们选择“e”。

输入: 用于分析的文本.

输出: 最常见的字母的小写形式。

我的解题

  • 我的解题思路:通过两次循环分别得到“字母对应其个数的字典”“字典中个数最多的字母”
  • 用到的知识点:字典的定义、赋值、循环,ord(),循环语句,条件语句
def checkio(text):
    letter = 'z'
    result = {}
    for char in text.lower():
        if 97<=ord(char)<=122:
            if char in result.keys():
                result[char] = result[char] + 1
            else:
                result[char] = 1
    for key,value in result.items():
        if value == max(result.values()):
            if ord(key) < ord(letter):
                letter = key    
    return letter   

text = input("Input your text:")
print(checkio(text)) 

做这样一题写出上面代码也花去很多时间,比如怎么将字符转成数字等等,过程不去管,但却得到更多,枯燥学习的很多基础知识点可以用上,“草草”学习的知识点重新查看加深印象。

大神的解题

当看到大神的解题,一万只草泥马啊。。。

import string
def checkio(text):
    text = text.lower()
    return max(string.ascii_lowercase, key=text.count)

只有一行!!!嗯?max()!我也用到了啊!震惊后还是好好解读大神代码吧!且要好好解读下!

各种搜索,string.ascii_lowercase等价于’abcdefghijklmnopqrstuvwxyz’。key参数的含义是懂的,记得教程中有sorted()函数,sorted([-2,1,-3],key=abs)的意思是按绝对值将[-2,1,-3]进行排序,所以大神代码的意思:返回‘a-z’中在key中出现次数最多的字母。

总结

反思为什么我写不出来,第一:我不知道max()有key属性,第二:不知道string的count函数,第三:即使知道应该也想不出来。对于第三点只能继续深入学习积累,对于前两点有必要好好搜索学习,拓展并总结。

  • 有key参数的函数:sorted(),max(),min().暂时查到这些,还有的话以后修改添加。
  • string的属性与函数自己做一个测试总结:python中string总结
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值