Python实现The Most Wanted Letter详解

__________________________________________________________________________________________________________________

人生有:

喜欢的编程!

喜欢的小仙女!

还有什么不满足呢?

题目来源于:https://py.checkio.org/

____________________________________________________________________________________________________________________

给你一个其中包含不同的英文字母和标点符号的文本,你要找到其中出现最多的字母,返回的字母必须是小写形式,当检查最想要的字母时,不区分大小写,所以在你的搜索中 "A" == "a"。 请确保你不计算标点符号,数字和空格,只计算字母。如果你找到 两个或两个以上的具有相同的频率的字母, 返回那个先出现在字母表中的字母。 例如 -- “one”包含“o”,“n”,“e”每个字母一次,因此我们选择“e”。
输入: 用于分析的文本
输出: 最常见的字母的小写形式。

范例:
checkio("Hello World!") == "l"
checkio("How do you do?") == "o"
checkio("One") == "e"
checkio("Oops!") == "o"
checkio("AAaooo!!!!") == "a"
checkio("abe") == "a"

编程思想&步骤

1.编程中不区分大小写,又因为输出为小写,我们可以先把字符串转化为小写。

2.通过迭代字符串中的每个字符,把字符和出现的频率转化为[["a",1],["b",2],["c",3]....]形式,需要解决怎么去掉重复字符的问题。

3.可以创建 checkList,迭代一次字符串就把字符串添加到其中,因此在第二步迭代中需要要增加字符不在 checkList 的判断。

4.通过sorted()函数对第二步生成的列表进行排序,最后输出结果。

编程知识点

1.判断元素在列表中

in:判断是否在....中

not in:判断是否不在....中

str = "this is a test"
list = [1,2,4,5]
dict = {"a":1,"b":2,"c":3}
print("g"in str) #False
print(1 in list) #True
print("a" not in dict.keys()) #False

2.sorted()函数详解

Python内置的排序函数sorted可以对list或者iterator进行排序。

from operator import itemgetter
#按照第三个元素排列
students = [('jane', 'B', 12), ('dave', 'B', 11), ('john', 'C', 10)]
students = sorted(students, key=lambda student : student[2])
print(students)# [('john', 'C', 10), ('dave', 'B', 11), ('jane', 'B', 12)]
students = sorted(students, key=itemgetter(2,1))
print(students)
#按照第三个元组排列,当第三个元素相同的时候,按照第二个元素排列。
students = [('jane', 'B', 12), ('dave', 'B', 10), ('john', 'A', 10)]
students = sorted(students, key=lambda student :(student[2],student[1]))
print(students) #[('dave', 'B', 10), ('john', 'A', 10), ('jane', 'B', 12)]
students = sorted(students, key=itemgetter(2,1))
print(students)

如果需要倒叙排列,添加第三个 参数:reverse = True

students = [('jane', 'B', 12), ('dave', 'B', 11), ('john', 'C', 10)]
students = sorted(students, key=lambda student : student[2],reverse =True)
print(students)# [('jane', 'B', 12), ('dave', 'B', 11), ('john', 'C', 10)]
按照第三个元组倒叙排列,当第三个元素相同的时候,按照第二个元素正序排列。
students = [('jane', 'B', 12), ('dave', 'B', 10), ('john', 'A', 10)]
students = sorted(students, key=lambda student :(-student[2],student[1]))
print(students)

编程实现

def checkio(Str):
    mainList = []
    checkList = []
    str = Str.lower()
    for tempChar in str:
        tempList = []
        if not(tempChar in checkList) and tempChar.isalpha(): #不会判断元素是否在列表中    
            checkList.append(tempChar)
            tempList.append(tempChar)
            tempList.append(str.count(tempChar))
            mainList.append(tempList)
    print(mainList) 
    #不会用sorted函数       
    mainList = sorted(mainList,key=lambda mainList : (-mainList[-1], mainList[0]))    
    print(mainList)
    a = mainList[0][0]
    return a 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值