python - Python - 拼字游戏字数
问题描述
我需要为拼字游戏编写一个简短的程序,给定一个单词它可以计算分数。
我是 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'))
解决方案
您需要指定字母和值之间的对应关系,更好的快速访问是每个字母都有一个简单的对应关系。
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2,
"f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3,
"l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1,
"r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4,
"x": 8, "z": 10}
然后对于单词的每个字母,在 the 中找到它score dict
并将所有
# simple for loop style
def scrabble_word_count(word):
res = 0
for letter in word:
res += score[letter]
return res
# functionnal style
def scrabble_word_count(word):
return sum(map(score.get, word))
使用单独的列表:
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', 'p']
five_letter_point = ['k']
eight_letter_point = ['j']
ten_letter_point = ['q', 'z']
def scrabble_word_count(word):
res = 0
for letter in word:
if letter in one_letter_point:
res += 1
elif letter in two_letter_point:
res += 2
elif letter in three_letter_point:
res += 3
elif letter in four_letter_point:
res += 4
elif letter in five_letter_point:
res += 5
elif letter in eight_letter_point:
res += 8
elif letter in ten_letter_point:
res += 10
return res
推荐阅读
- c++ - IntelliSense '没有可用的成员'
- javascript - 如何检查字符串是否等于 Javascript 中的数组条目?
- rust - 你能在 Rust 中指定返回类型的可变性吗?
- c# - 如何从文本文件中打印出每个字符
- python - 使用 VGG16 进行特征提取以进行聚类
- vue.js - 如何从 vuex 操作中调用 core-ui 模态和 toast?
- node.js - 运行“npm install -g @vue/cli”时出错,多次尝试重新安装
- haskell - 如何通过键绑定在 Xmonad 窗口上运行挂钩
- android - android用户输入出生日期验证
- uwsgi - 防止 uwsgi_response_write_body_do() TIMEOUT