2016-10-27 2 views
0

私は次のように与えられてきた、と私は、値の型とそれが返す式を与えるように求めています:操作の順序で苦労しています。私はこれを熟考していますか?

>>> b = 10

>>> c = b > 9

>>> c

私がいることを知っています最初の部分は、bを10と定義していますが、2番目の文では、次のように解釈しています。cb>9と定義してください。今度はb>9が値として意味をなさないので、cはそれと等しくないので、答えはerrorで、タイプはNonetypeです。

正解は明らかにTrueですが、どうしてですか?なぜ最初にc=bの部分を取り、それが> 9かどうか尋ねますか?あなたがこれらのものを適用するはずの標準的な順序のいくつかの並べ替えはありますか?

PS:プログラミングで意味する3つの>>>記号は何ですか?私は入門的なCSコースをやっているので、間違った人物を許してください。

答えて

1

Pythonのための優先順位がwell documentedです。 b > 9は、c =で割り当てる前に評価する必要があるブール値を返します。

>>>は、インタープリタREPLの一部です。すべてのプログラミング言語に固有の意味はありません。

Pythonインタプリタでコードを実行して、出力値を確認できます。これらの行には何も評価されていないので、Nonetypeエラーが出るのはどういう意味なのでしょうか?

0

私はあなたが間に混乱していると思う:

  • 演算子の左側の変数にオペレータの右側の式の結果を代入する代入演算子(=)、そして;
  • 等価演算子(==)は、演算子の左右の式を同等かどうかテストし、ブール値(真偽)を返します。

最初の式は、変数bに値10を割り当てます。 2番目の式は、式b > 9(つまり10> 9)を割り当てます。これは、真と評価され、cになります。したがって、cがどのように真実に終わっているかがわかりました。

もう1つの問題は、=演算子がの右結合式であることです。これは、演算子の右側の式が最初に評価されることを意味します。すなわち2行目でb > 9が最初に評価されてから、結果が(true)に割り当てられるのはcです。

質問の2番目の部分に答えてください。あなたのコードは、通常のC#コンパイラのように実際にはコンパイルされません。私は>>>が何であるか分かりません。あなたはオンラインエディタなどを使っていますか?

有効なC#のコードは次のようになります。

int b = 10; 
bool c = b > 9; 
Console.WriteLine(c); //Outputs true 
+2

Pythonの質問です... –

+0

明確にするために、 'c'は*評価*表現「b> 9」ではなく、表現そのものです。 '='は実際には演算子でもありません。 'a = b = 2'と書くことができるという事実は、' '式' 'b = 2'の特定の結果が割り当てられた結果ではなく、代入*の特殊なプロパティです。 – chepner

関連する問題