【发布时间】:2020-01-13 18:44:36
【问题描述】:
我需要为拼字游戏编写一个简短的程序,给定一个单词它可以计算分数。
我是 python 新手,仍在研究如何组合列表。 对解决方案的任何帮助或解释将不胜感激。
我想我必须声明每个列表都等于一个数字,然后使用它来计算如何查看一个单词并计算该分数。
谁能给我一个解决方案并告诉我各个要点?
one_letter_point = ['e', 'a', 'o', 't', 'i', 'n', 'r', 's', 'l', 'u']
two_letter_point = ['d', 'g']
three_letter_point = ['c', 'm', 'b', 'p']
four_letter_point = ['h', 'f', 'w', 'y', 'v']
five_letter_point = ['k']
eight_letter_point = ['j', 'x']
ten_letter_point = ['q', 'z']
def scrabble_word_count(word):
one_letter_word = 1 #do the same for the rest and then not sure what to do
return scrabble_word_count(word) # not sure if this is supposed to be done
print answer_word('zoo')
我有这种替代方法,但它只查看第一个字母并指出这一点。例如apple = 1 的点数。因为它只查看 a。
def scrabble_word_count(word):
score = 0
for letter in word:
if letter in one_letter_point:
score += 1
elif letter in two_letter_point:
score += 2
elif letter in three_letter_point:
score += 3
elif letter in four_letter_point:
score += 4
elif letter in five_letter_point:
score += 5
elif letter in eight_letter_point:
score += 8
elif letter in ten_letter_point:
score += 10
return score
print(scrabble_word_count('apple'))
【问题讨论】:
-
你的代码有缩进错误
-
更好的方法是使用将字母映射到分数的字典。
{"a": 1, "b": 3, ...} -
@Barmar 我可以这样做,它更简单,但我被告知我必须这样做。
-
这里的答案是正确的,因为您应该进行从字母到分数的映射。如果你想把它扩展到做更复杂的事情(比如考虑乘数),那么看看我在大学里做的拼字游戏项目:github.com/FermenFlo/Scrabble-Solver/blob/master/src/…。你可以看到我们也有一个
score_map属性。随意闲逛。 -
您现在可以考虑接受答案或发表评论以获取详细信息;)以奖励那些为您花费时间的人;)
标签: python arrays python-3.x list