>>> 3//2
1
>>> -3//2
-2
显然,我希望答案是肯定的,所以首先我尝试了--3//2
,但结果是1。我推断这是因为Python将--
计算为+
。为了解决这个问题,我发现可以使用-(-3//2))
,问题解决了。
但我找到了另一个解决方案,即(为了进行比较,我包含了前面的示例):
>>> --3//2 # Does not give ceiling
1
>>> 0--3//2 # Does give ceiling
2
我无法解释为什么包括0有帮助。我已经阅读了关于“组织”的文件,但我在那里没有找到任何帮助。我以为可能是因为评审顺序的原因:
Python使用符号-
作为一元(-x
)和二进制(x-y
)运算符。它们具有不同的运算符优先级。
具体来说,wrt//
的顺序是:
-
//
-
┌────────────────┬────────────────┐
│ --3//2 │ 0--3//2 │
╞════════════════╪════════════════╡
│ │ ╔═══════╗ │
│ │ ║ 0 - z ║ │
│ │ ╚═════╦═╝ │
│ ╔════════╗ │ ╔════╩═══╗ │
│ ║ x // y ║ │ ║ x // y ║ │
│ ╚═╦════╦═╝ │ ╚═╦════╦═╝ │
│ ╔════╩╗ ╔╩══╗ │ ╔═══╩╗ ╔╩══╗ │
│ ║ --3 ║ ║ 2 ║ │ ║ -3 ║ ║ 2 ║ │
│ ╚═════╝ ╚═══╝ │ ╚════╝ ╚═══╝ │
└────────────────┴────────────────┘
问题内容: Python如何评估表达式? 我插了多少,这就是答案。请任何人可以解释这种行为 因为它是印刷,因为它是印刷 问题答案: 您的表情与: 可以在任何数字表达式之前使其为负,或不执行任何操作(存在对称性选项)。带有负号: 和 我看到您澄清了您的问题,说您来自C背景。在Python中,没有像C和C这样的增量运算符,这可能是造成混淆的原因。要递增或递减变量,或在Python中使用以下样式:
问题内容: 我正在滚动遵循Servlet 2.5的J2EE代码,并且想知道2.5和3之间的主要区别是什么。最感谢指向Sun官方文档和个人经验的指针。 如果我暂时不考虑自己与3相关,那就这么说。谢谢! 问题答案: 更新 正如更新并更明确地说明的那样,这些是Servlet 2.5和3之间的主要区别(我并不想穷尽所有,我只是在提到最有趣的部分): 声明Servlet,过滤器和侦听器的注释(易于开发) 在
问题内容: 我不太了解它们之间的区别,因此我对这两个软件包有一些疑问。 在Google上浏览了一下之后,似乎Oracle决定使用JDK7版本的更新和增强软件包来更新该软件包。 封装的性能与封装相比如何? 从到有什么大变化?(例如新方法,功能) 为什么必须对原始软件包进行更新? 如今是该软件包的代名词吗? 这并不是我想在代码中使用旧版包,我对此真的很好奇。请告诉我他们的区别? 问题答案: Java最
主要内容:Python 3.x print()函数代替了print语句,Python 3.x 默认使用 UTF-8 编码,Python 3.x 除法运算,Python 3.x 异常,Python 3.x 八进制字面量表示,Python 3.x 不等于运算符,Python 3.x 输入差异,Python 3.x 数据类型Python 版本分为两大流派,一个是 Python 2.x 版本,另外一个是 Python 3.x 版本,Python 官方同时提供了对这两个版本的支持和维护。 2020 年 1
问题内容: 以下使用argparse的子解析器的代码在Python 3上失败,但在Python 2中按预期运行。在比较了文档之后,我仍然不知道为什么。 Python 2.7.6的输出为: 在Python 3.3.5中,我得到: 问题答案: 最新版本改变了它测试所需参数的方式,而次级解析器也陷入了困境。它们不再是“必需的”。 http://bugs.python.org/issue9253#msg1
问题内容: 我有一个InnoDB表和一个列索引,就像这样 我只想了解这些查询背后的真实情况: 和 据我了解,第一个MySQL将使用列寿命索引,而第二个则无法使用。是吗?哪个对性能更好? 问题答案: 这两个查询都将使用索引。 查询A将转换为: 查询B将转换为 因此查询A将使用OR进行3个测试。 查询B将使用AND进行2个测试。 查询B更快。 通常,使用的查询比使用的查询要快。 另外,查询B执行的测试