1
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}

def scrabble_score(word):
    count=0
    word.lower()
    print word
    for char in word:
        count=count+score[char]
    return count

基本的に、入力単語を取得し、辞書に応じてそのスコアをカウントする必要があります。

4

3 に答える 3

4

このscrabble_score関数は、次のように簡単に表現できます。

def scrabble_score(word):
    return sum(score[char] for char in word.lower())

Python では、反復を表現する慣用的な方法は、ジェネレーター式 (上記のコードのように) またはリスト内包表記を使用することです。

現在の問題に関しては、他の回答で指摘されているように、lower()メソッド(およびその問題に関する他のすべての文字列メソッド)は文字列をその場で変更しないため、戻り値を再割り当てするか、すぐに使用する必要があります。私の答えに示されています。

于 2013-06-23T13:47:08.440 に答える