我正在尝试创建一个基本上有一个输入字符串的程序,程序应该做的是输出最多出现的字符并说出它发生了多少次.它还输出发生次数最少的字符并说明它出现的次数.
我在开始学习这个课程时遇到了麻烦,因为我在夏季大学课程的一部分时这样做,因此在6个星期内完成了整个学期课程,因此课程进展非常快.有人可以帮我解释一下这背后的逻辑,这样我就可以开始了吗?
我们还没有学到很多不同的方法,所以如果你能坚持使用基本的python编程就好了.< - 像while循环和for循环我们学习,列表,元组,字符串等我们没有学到任何其他东西..
谢谢
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周后用循环来完成它
| 归档时间: |
|
| 查看次数: |
3672 次 |
| 最近记录: |