计算最多和最不常见的非空格字符的程序

Pan*_*thy 2 python

我正在尝试创建一个基本上有一个输入字符串的程序,程序应该做的是输出最多出现的字符并说出它发生了多少次.它还输出发生次数最少的字符并说明它出现的次数.

我在开始学习这个课程时遇到了麻烦,因为我在夏季大学课程的一部分时这样做,因此在6个星期内完成了整个学期课程,因此课程进展非常快.有人可以帮我解释一下这背后的逻辑,这样我就可以开始了吗?

我们还没有学到很多不同的方法,所以如果你能坚持使用基本的python编程就好了.< - 像while循环和for循环我们学习,列表,元组,字符串等我们没有学到任何其他东西..

谢谢

Joh*_*ooy 6

from collections import Counter
the_string = "This is a string!"
Counter(x for x in the_string if not x.isspace()).most_common()
Run Code Online (Sandbox Code Playgroud)

这是一种没有Counters/dicts/etc的方法.

>>> the_string = "This is a string!"
>>> A = [0] * 256
>>> for x in the_string:
...     if not x.isspace():
...         A[ord(x)] += 1
... 
Run Code Online (Sandbox Code Playgroud)

ord() 将每个角色映射到一个位置 A

>>> A
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)

你很容易找到这样一个最常见的角色

>>> chr(A.index(max(A)))
'i'
Run Code Online (Sandbox Code Playgroud)

最小值更复杂,因为我们需要最小值 0

>>> chr(A.index(min(x for x in A if x)))
'!'
Run Code Online (Sandbox Code Playgroud)

好吧,你可能对max和min以及生成器表达式感到不舒服,但你应该能够for在6周后用循环来完成它

  • 那么现在我们现在正在低估正确的答案,因为我们不想引起人们的注意?这些天学生不被允许寻找比他们所教的更好的解决方案吗? (3认同)