挣扎着操作的顺序。我是否想过这个?

时间:2016-10-27 14:14:37

标签: python boolean

我已经获得了以下内容,并且我要求提供值的类型及其返回的表达式:

>>> b = 10

>>> c = b > 9

>>> c

我知道在第一部分中,我们将b定义为10,但在第二句中,我将其解释为:将c定义为相等到b>9。现在b>9作为一个值,没有意义,因此c不能与它相等,所以我认为答案是error,类型是Nonetype

正确答案显然是True,但为什么呢?为什么我们首先考虑c=b部分,然后询问它是否> 9?是否存在某种标准顺序,您应该应用这些东西?

PS:三个>>>符号在编程中意味着什么?我正在做CS入门课程,所以请原谅任何用词不当。

2 个答案:

答案 0 :(得分:1)

Python的顺序优先级为well documentedb > 9返回一个布尔值,必须先对其进行评估,然后才能使用c =进行分配。

>>>是解释器REPL的一部分。它对所有编程语言都没有特定的含义。

您可以在任何Python解释器中运行您的代码,以查看输出值是什么。我不确定你是什么意思得到一个Nonetype错误,因为在那些行中没有被评估为None

答案 1 :(得分:0)

我认为你之间感到困惑:

  • 赋值运算符(=),它将运算符右侧的表达式结果赋给运算符左侧的变量;
  • 等于运算符(==),它测试运算符右侧和左侧的表达式是否相等,并返回一个布尔值(true / false)。

第一个表达式将值10赋给变量b。第二个表达式将表达式b > 9(即10> 9)(其评估为真)分配给c。因此,我希望你能看到c最终是如何成真的。

您可能需要澄清的另一个问题是=运算符是右关联,这意味着将首先计算运算符右侧的表达式。即在第二行中,在将结果(true)赋给b > 9之前,首先评估c

回答你问题的第二部分。您的代码实际上不会像常规C#编译器那样进行编译。我不确定>>>是什么。您使用的是在线编辑器吗?

有效的C#代码为:

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