1

私はここ数週間 Python を勉強しており、イースターの直後に、GCSE の成績にカウントされる管理された評価を受けます。この評価では、コードの長さなどの基準についても採点されます。

問題は、ユーザーに単語を尋ね、入力された単語の母音値を計算する Python プログラムを作成することでした。

知りたいこと:

このコードを短縮する方法はありますか?

また:

「word」変数を出力せずにプログラムを実行するにはどうすればよいですか?

上記で、コード (制御フロー部分) で使用したルーブリックが与えられました。

score = 0

word = str(input("Input a word: "))

c = 0
for letter in word:
        print(word[c])
        c = c + 1
        if letter == "a":
                score = score + 5
        if letter == "e":
                score = score + 4
        if letter == "i":
                score = score + 3
        if letter == "o":
                score = score + 2
        if letter == "u":
                score = score + 1

print("\nThe score for your word is: " + score)
4

2 に答える 2

6

と を使用sumしてdict、母音をキーとして保存し、関連する値を値として保存できます。

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
print(sum(values.get(ch,0) for ch in word))

values.get(ch,0)単語の各文字が母音ではないため、辞書にない0場合、デフォルト値として返されます。ch

sum(values.get(ch,0) for ch in word)ジェネレーターオブジェクトに対してnext () メソッドが呼び出されたときに、変数が 遅延評価されるジェネレーター式です。

独自のコードに関しては、if/elif を使用する必要があります。前のステートメントが False と評価された場合にのみ評価されますが、elif は常に評価される場合、文字は 1 つの値しか持つことができません。

score = 0
 # already a str in python3 use raw_input in python2
word = input("Input a word: ")

for letter in word:
        if letter == "a":
            score += 5 # augmented assignment same as score = score + 5
        elif letter == "e":
            score += 4
        elif letter == "i":
            score += 3
        elif letter == "o":
            score += 2
        elif letter == "u":
            score += 1
于 2015-03-03T21:39:15.737 に答える
1

作業コードは次のとおりです。

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
score = sum(values[let] for let in word if let in values)

print("\nThe score for your word is: " + score)
于 2015-03-03T22:11:52.227 に答える