如何计算单词中的字母?

时间:2015-08-24 17:13:54

标签: python counter words letters

我正在尝试制作一个Python脚本,用于计算我的Hangman游戏随机选择的单词中的字母数量。

我已经在网上浏览了一下,但我能找到的大部分内容都是用一个字来计算特定的字母。经过更多的环顾四周后,我最终得到了这个,但由于某些原因这不起作用。如果有人能够指出错误,那就非常感激。

wordList = ["Tree", "Fish", "Monkey"]
wordChosen = random.choice(wordList)
wordCounter = wordChosen.lower().count['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
print(wordCounter)

2 个答案:

答案 0 :(得分:1)

首先,您的代码包含一个非常重要的错误:

wordChosen.lower().count['a', 'b'] #...

count是一个函数,所以它要求你用括号而不是方括号括起它的参数!

接下来,您应该首次使用函数时尝试引用 Python Documentation 。这应该有助于您理解为什么您的方法不起作用。

现在解决您的问题。如果要计算字符串中的字母数,请使用len(wordChosen)计算字符串中的字符总数。

如果您想计算每个字母的频率,已经建议了几种方法。这是另一个使用字典:

import string
LetterFreq={}
for letter in string.ascii_lowercase:
    LetterFreq[letter] = 0
for letter in wordChosen.lower():
    LetterFreq[letter] += 1

这有一个很好的特权,即将单词中不存在的所有字母默认为0:)

希望这有帮助!

答案 1 :(得分:0)

问题:
count方法只接受一个参数,并且您尝试传递整个列表。

解决方案:
只需遍历所有字母,然后在打印它们及其数量之前测试它们是否在字符串中。

import random
wordList = ["Tree", "Fish", "Monkey"]
wordChosen = random.choice(wordList)

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

for letter in letters:
    if letter in wordChosen.lower():
        amount = str(wordChosen.lower().count(letter))
        print(letter + " : " + amount)

结果:
如果选择的随机字是“树”:

e : 2
r : 1
t : 1

结论:
使用集合绝对是一种更有效的方法,但我相信我在上面显示的方式会创建更多您正在寻找的输出。