我试图在不导入任何内容的情况下创建程序。该程序允许用户输入一个段落,然后打印消息中有多少A,有多少B等。 所以它有效...它只是非常长。我是编码的新手,我知道有一种方法可以用def简化下面的代码,但我不确定如何。有人可以帮忙吗?
答案 0 :(得分:2)
你不需要任何方法,但你可以明确地缩短它:
index
方法确定字母表中位置的位置。if letter in alphabet
作为警卫以确保字母对字母表有效,而不是对字母表进行硬编码。这样你甚至可以扩展你的字母。 (请注意,计数器设置为字母表的长度。)这是一个建议:
message = input('what is your message? ').upper()
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
counter = [0] * len(alphabet)
for letter in message:
if letter in alphabet:
counter[alphabet.index(letter)] += 1
for letter, count in zip(alphabet, counter):
print(letter, ':', count)
答案 1 :(得分:0)
我们可以使用一行指令来完成它,我们可以使用:
count
字符串的方法,返回字符串中包含的元素的数量chr
函数,用于提供int
中的字符。 chr(65)
提供A
,chr(66)
提供B
,... join
用于连接列表字符串的函数结果如
message = input('what is your message? ').upper()
print('\n'.join([chr(65+i)+':'+str(message.count(chr(65+i))) for i in range(26)]))
答案 2 :(得分:0)
对于非常简短和优雅的解决方案,请使用收集模块中的计数器单元:
from collections import Counter
message=raw_input("what is your message?")
message=message.upper()
c = Counter(message)
print c.most_common()
这会计算邮件中的各种字母。它甚至可以快速为您排序结果。这是一个示例对话框:
“你的消息是什么?你好,新的Pythonist!
[('',3),('E',3),('H',3),('T',3),('I',2),('N',2) ,('!',1),(',',1),('O',1),('P',1),('S',1),('R',1),( 'W',1),('Y',1)]“