2013-05-24 14 views
5

私は別のバージョンで心臓ゲームについての宿題をしています。もし我々がリストmycardsを持っていれば、現在プレイヤーが手に持っているカードがすべて入っていると言われています。 プレイは、潜在的なカードを表す単一のカードです。すべてカードにHEART(H)またはQUEEN OF SPADES(QS)のいずれかのカードが含まれている場合、Trueを返します。例えば特定の要件を持つリスト内のすべての要素をチェックする方法は?

>>> mycards= ['0H','8H','7H','6H','AH','QS'] 
>>> play = ['QS'] 

これは私が

if play[1] == 'H': 
    return True 
if play == 'QS': 
    return True 
else: 
    return False 

を試してみました。しかし、私は私のコードはちょうど1 QSと1つのHをチェック考えるものである真

を返します。リスト。 allを含むコードをQSまたはHにするには?

答えて

10

あなたの説明は、ソリューションに直接マップ:明確にするため

編集:そのあなたの「宿題」私は既製のコードを提供するつもりはないので、

mycards= ['0H','8H','7H','6H','AH','QS'] 
all((x == 'QS' or 'H' in x) for x in mycards) 
# True 
+1

Eh?なぜここにdownvote? –

+0

ああ、真実私はコーヒーが必要です+1 – jamylak

+0

ありがとうございました –

5
>>> mycards= ['0H','8H','7H','6H','AH','QS'] 
>>> all(x[-1] == 'H' or x == 'QS' for x in mycards) 
True 
+0

Thomasが投稿したものとどのように違うか分かりません。 –

+0

私は 'x [-1] == 'H' 'が必要だとは思わない - 私が知っている限り(コーヒーは途中で)、カードのデッキにあるスーツは' H'で始まる。 –

+0

+1、元の質問に相当する 'x [1]'が含まれているためです。これは '' x 'のHより速い。 – EOL

2

。 :)ループを使用して、リストの上に

反復:

を例えばのため:

for el in mycards: 

次の2つの条件のいずれかに該当するかどうかのいずれかをチェックする必要が各繰り返しで。

if el == 'QS' or el[1] == 'H': 

カードがスペードのクイーンまたは上記の心臓のいずれかである場合は、条件がtrueになります。あなたは今までそれを得ることを願っています。条件が真でない場合は、単にFalseを返します。

リスト内のすべての要素がループでチェックされていてもFalseが返されない場合、すべてのカードはスペードの女王かハートのいずれかです。したがって、ループが終了した後にTrueを返します。

編集: ますので、」:私はあなたの要求に応じてコードを投稿します(Pしかし、あなたがしようとしたものを私を表示する必要があります)まだ得ていない場合は、しばらくの間、自分で試してみてください

私はコードを投稿しています。

def HorQS(mycards): 
    for i in mycards: 
     if i != 'QS': 
      if i[1] != 'H': 
       return False 
    return True 

print HorQS(['0H','8H','7H','6H','AH','QS']) # True 
print HorQS(['0H','8H','7H','6H','AH','HS']) # False 
print HorQS(['0H','8H','7K','6H','AH','HS']) # False 
+0

Pythonには 'all()'があり、人々がここのようにホイールを再開発する必要がなく、コードの意味がはるかに明らかになります。私は、誰にも(Cのような言語でのみ必要な)このような複雑な解決策を使用することを奨励しません。 – EOL

+0

私は彼のコードがどう動くべきかをaskerに説明することをもっと目指していました。質問者の心の中でアルゴリズムを考えることは私の主な動機でした。そして、それは非常に簡単な質問だったので、彼は彼の要求をコードに変換する際の質問者の弱点をはっきりと尋ねました。私はall()に同意しますが、それでも説明の後ろでなければなりません。そうでなければ、学生は単に「ああ、この機能は自分の仕事をしてくれます。私は初心者がそのように考えることを望まない。 –

+0

@RaviOjha説明に感謝します:)それは私に多くの助けになります! –

関連する問題