2016-10-07 5 views
3

これはゲームの一部です。秘密の単語と引数として推測された文字を取り、正しく推測したかどうかを知らせる関数です。Wordの推測ゲーム - これはどんなに良く書けますか?

私は完全に正直なことですが、これはedXコースの課題です。私はすでにこの課題に合格しています。このコードは動作します。私はちょうどそれがどんなに良く書かれることができるかと思っています。ディスカッションフォーラムに参加している人々の中には、彼らが1行で解決した方法について話していた人もいました。ここで

def isWordGuessed(secretWord, lettersGuessed): 
    guessed = [] 
    l= str(lettersGuessed) 
    s= list(secretWord) 
    for i in l: 
     if i in s: 
      guessed.append(i) 
      guessed.sort() 
      s.sort() 
    return guessed == s 

例として年生からテストケースの一つである:

isWordGuessed('durian', ['h', 'a', 'c', 'd', 'i', 'm', 'n', 'r', 't', 'u'])

+1

この問題がコードの改善のみに関するものであれば、代わりにcodereview.stackexchange.comに移行することをお勧めします。コードが機能していると述べていますので、ここでは既存の作業コードの改善の余地はありません。 – blacksite

+1

@not_a_robot [コードレビュー](http://codereview.stackexchange.com/tour)は、このタイプの質問に行くことを提案するのに適しているかもしれませんが、そこに質問者を送るという習慣から抜け出すべきです。明確にするために、[this](http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users)メタポストをお読みください。 – idjaw

+0

それは見たことがない、ありがとう。私はそれをどちらかの方法で見る。 – blacksite

答えて

6

このような何かはかなり短いです:secretWordのすべての文字については

def isWordGuessed(secretWord, lettersGuessed): 
    return all([c in lettersGuessed for c in secretWord]) 

それがlettersGuessedにあることを確認してください。これは基本的にブール値のリストを作成し、配列内のすべての要素がTrueの場合には、は、Trueを返します。

また、FWIW:慣用句のpythonは、ラクダの大文字小文字を使用せず、アンダースコアを使用します。

+0

ああ、それは素晴らしい解決策です。私はすべてのコードを使用してこのようにしてみましたが、コードは通過しませんでした。私はちょうどすべて間違って使用していたと思います。私はまだ初心者であり、それがすべてを使う方法を知っている唯一の方法なので、 'all(x == lettersはxのためにsecretWordでxのために推測しました) 'を使っていました。レッスンありがとう! - また、通常はアンダースコアも使用しますが、混乱を避けるために、割り当ての説明で与えられた関数名、引数、変数を使用しています。 –

関連する問題