尝试创建 python 程序,但使用 def 进行了简化
Trying to create python program, but simplified with def
我正在尝试创建一个程序而不导入任何东西。该程序让用户输入一段话,然后打印消息中有多少个 A,多少个 B,等等。
所以它有效......它只是很长。我是编码新手,我知道有一种方法可以使用 def 简化下面的代码,但我不太确定如何。有人可以帮忙吗?
你不需要任何方法,但你绝对可以缩短它:
- 字符串可以用作字符数组。
- 您可以使用
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)
一个人可以用一行指令来完成,我们利用:
count
字符串的方法returns一个字符串中包含的元素个数
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)]))
对于一个非常简短和优雅的解决方案,使用 collections 模块中的 Counter 单元:
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)]"
我正在尝试创建一个程序而不导入任何东西。该程序让用户输入一段话,然后打印消息中有多少个 A,多少个 B,等等。 所以它有效......它只是很长。我是编码新手,我知道有一种方法可以使用 def 简化下面的代码,但我不太确定如何。有人可以帮忙吗?
你不需要任何方法,但你绝对可以缩短它:
- 字符串可以用作字符数组。
- 您可以使用
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)
一个人可以用一行指令来完成,我们利用:
count
字符串的方法returns一个字符串中包含的元素个数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)]))
对于一个非常简短和优雅的解决方案,使用 collections 模块中的 Counter 单元:
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)]"