1

私は奇妙なことに出くわしました。私はPythonを初めて使用するので、これが基本である場合は申し訳ありません。

a = 12
b = int(24/3)
x = (a < b)

デバッガーから: 私は持っています:

a (int) = 12
b (int) = 8
x (bool) = True

この状況では 8 > 12 のようです。私はここで無知です。説明はありますか?

PS: x = a < b は同じことを行います (括弧なし)

編集 私はスキッシュ(自動テスト)を使用していますが、同僚にスキッシュで同じスニペットをテストするように依頼したところ、同じことが行われたため、それが問題のようです。

4

3 に答える 3

3

おそらく、デバッガーまたはコードの別の部分で、何かが根本的に間違っています。Python は、基本的な算術演算に関してはかなりバグがありません。

>>> a = 12
>>> b = 24/3
>>> a < b
False
于 2013-07-17T13:53:31.217 に答える
1

これはよく知られた動作ですが、厳密には直観的ではありませんが、Squish の動作です。あなたの呼び出しはPython関数intを使用しませんが、テスト中のアプリケーションのメソッドに渡すことができる整数を構築するためにコンストラクターを呼び出します(など)。つまり、Squish は の意味をオーバーライドします。intintsetWidthint

使用できます

import __builtin__
a = 12
b = __builtin__.int(24/3)
x = (a < b)

Python の取得を強制しintます。

于 2014-11-26T22:22:20.253 に答える