尝试创建python程序,但用def简化

时间:2016-10-27 21:34:07

标签: python function simplify

我试图在不导入任何内容的情况下创建程序。该程序允许用户输入一个段落,然后打印消息中有多少A,有多少B等。 所以它有效...它只是非常长。我是编码的新手,我知道有一种方法可以用def简化下面的代码,但我不确定如何。有人可以帮忙吗?

3 个答案:

答案 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)提供Achr(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)]“

相关问题