2012-04-17 10 views
0
if not sky.has_key('blue'): 
    get_currently_compared_key # blue 
elif not sky.has_key('cloud'): 
    get_currently_compared_key # cloud 

上記のコードでは、if文で 'blue'を取得したいと考えています。役に立つ方法はありますか?ifステートメントで現在比較されている値を取得する方法

編集1:スカイ== '青' の場合 - >そうでない場合は、空 == '青' 編集2:sky.has_key( '青')でない場合は...魔法の識別子ことが

+0

skyと比較したい文字列を含む変数/定数に 'blue'を置き換えること以外は何もありません。 このようにして、ステートメント内の変数にアクセスすることができます。通常はコード内で –

+1

空ではない場合は空、空であれば青、空なら空です。 – avasal

+0

あなたは本当にあなたが最初から欲しい質問をして、誰かが答えるたびにあなたの質問を編集してはいけません。 –

答えて

2

ありません結果的にblueに展開されます。となりますが、skyは明らかにの値になります。

not sky == 'blue'の代わりにsky != 'blue'を意味します。いいえ、条件の比較で値に到達する魔法の方法はありません。どちらのタイプ再び'blue'や条件外でそれを保持する変数を作成します。

BLUE = 'blue' 

if sky != BLUE: 
    make_the_sky(BLUE) 

編集2:大丈夫、それはhas_keyだそう。まだ魔法はありません。 has_keyは、しばらくの間、非難されており、'blue' in sky(または'blue' not in sky)が好ましいことに注意してください。

+0

実際、私は間違いました。空でないなら...私の言うことです。 – kinakomochi

+0

@KenichiTakano:あなたは 'sky!=" blue "'を意味しますか? 'not sky ==" blue "は' not sky'がブール値に評価されるので常にfalseです。 –

+0

編集されたコードを参照してください。これはまさに私の意味です。何度も編集して申し訳ありません。 – kinakomochi

1

いいえ、これを行うための唯一の方法は明白です:

sky_colour = 'blue' 
if not sky == sky_colour: 
    do_something(sky_colour) 

またはあなたの編集のために:

sky_colour = 'blue' 
if sky_colour not in sky: 
    do_something(sky_colour) 

has_key()は必要ありません - それは、より読みやすいですが、代わりにinキーワードを使用します。

+0

明らかな機能が必要なようです。ありがとう。 – kinakomochi

+0

問題が解決した場合は、[回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)を自由にご利用ください。 –

関連する問題