a<b<c
standard を使用せずにこれを条件として使用できるかどうかを知りたいと思いましたa<b and b<c
。それで私はそれを試してみました、そして私のテスト結果は合格しました。
a = 1
b = 2
c = 3
assert(a<b<c) # In bounds test
assert(not(b<a<c)) # Out of bounds test
assert(not(a<c<b)) # Out of bounds test
今回は負の領域で、より多くの数値を試してみました。どこでa, b, c = -10, -9, -8
。テストはもう一度合格しました。より高い範囲でのテスト スーツでさえ機能しa, b, c = 10, 11, 12
ます。またはさえa, b, c = 10, 20, 5
。
そして、C++ で行われた同じ実験。これは私の考え方でした:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
a=10;
b=20;
c=5;
cout << ((a<b<c)?"True":"False") << endl; // Provides True (wrong)
cout << ((a<b && b<c)?"True":"False") << endl; // Provides False (proper answer)
return 0;
}
私が遭遇した他のすべての言語では、ブール値がc
. これらの言語でa<b
は、ブール値に評価され、評価を続けるb<c
と、数値に対してブール値を評価しようとするため、無効になります (ほとんどの場合、コンパイル時エラーがスローされるか、意図した比較が改ざんされます)。これはなぜかちょっと不安です。これが構文の一部であることを確認する必要があると思います。また、Python ドキュメントでこの機能が提供されている場所への参照を提供すると、このような機能がどの程度提供されているかを確認できるようになります。