Checkio-The most wanted letter-Solution

xiaoxiao2021-03-01  542

虽然最近一直在玩Chekio,但是都没有把东西分享出来。

也比较懒...就慢慢更新...

还蛮推荐在Checkio上学习python的。就是通过一个个的小测试来完成任务。

难度:Elementary

##The most wanted letter

##就是从一堆字符串中找到次数最多的字母

##次数相同的,使用最小的字母

举例:

assert checkio("Hello World!") == "l", "Hello test" assert checkio("How do you do?") == "o", "O is most wanted" assert checkio("One") == "e", "All letter only once." assert checkio("Oops!") == "o", "Don't forget about lower case." assert checkio("AAaooo!!!!") == "a", "Only letters." assert checkio("abe") == "a", "The First."

##################################答案分界线###########################################3

def checkio(text): text=text.lower() finallist=[] for letter in text: templist=[] if letter not in templist and letter.isalpha(): templist.append(letter) templist.append(text.count(letter)) finallist.append(templist) finallist=sorted(finallist,key=lambda finallist:(-finallist[-1],finallist[0])) return(finallist[0][0]) if __name__ == '__main__': #These "asserts" using only for self-checking and not necessary for auto-testing assert checkio("Hello World!") == "l", "Hello test" assert checkio("How do you do?") == "o", "O is most wanted" assert checkio("One") == "e", "All letter only once." assert checkio("Oops!") == "o", "Don't forget about lower case." assert checkio("AAaooo!!!!") == "a", "Only letters." assert checkio("abe") == "a", "The First." print("Start the long test") assert checkio("a" * 9000 + "b" * 1000) == "a", "Long." print("The local tests are done.")

思路比较简单:

通过每个字母的统计,然后最后使用sorted函数排序,第一按照次数,第二按照字母的顺序返回值。

别人的最佳答案:

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

查了一下string.ascii_lowercase跟string.lowercase应该是一样的。但是我用python3上使用了ascii_lowercase报错,string模块没有lowercase。

使用string.ascii_lowercase就是还会根据字母的顺序进行排列。

转载请注明原文地址: https://www.6miu.com/read-3390770.html

最新回复(0)