首页 > 解决方案 > 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'))

标签: pythonarrayspython-3.xlist

解决方案


您需要指定字母和值之间的对应关系,更好的快速访问是每个字母都有一个简单的对应关系。

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

推荐阅读