我正在尝试制作一个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)
答案 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
结论:
使用集合绝对是一种更有效的方法,但我相信我在上面显示的方式会创建更多您正在寻找的输出。