Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中比较分数对象?_Python_Python 3.x_Compare_Fractions - Fatal编程技术网

如何在Python中比较分数对象?

如何在Python中比较分数对象?,python,python-3.x,compare,fractions,Python,Python 3.x,Compare,Fractions,我有一个等分的用例。在Python中找到分数模块 尝试使用像这样的运算符,似乎效果不错 from fractions import Fraction print(Fraction(5,2) == Fraction(10,4)) # returns True print(Fraction(1,3) > Fraction(2, 3)) # return False 这是进行比较的预期方式吗 找不到文档中明确指定的任何内容 有人能证实这一点吗(与提到的源代码链接)?查看我们可以看到\uuuu

我有一个等分的用例。在Python中找到分数模块

尝试使用像
这样的运算符,似乎效果不错

from fractions import Fraction
print(Fraction(5,2) == Fraction(10,4)) # returns True
print(Fraction(1,3) > Fraction(2, 3))  # return False
这是进行比较的预期方式吗

找不到文档中明确指定的任何内容

有人能证实这一点吗(与提到的源代码链接)?

查看我们可以看到
\uuuu eq\uuu
定义如下:

def __eq__(a, b):
    """a == b"""
    if type(b) is int:
        return a._numerator == b and a._denominator == 1
    if isinstance(b, numbers.Rational):
        return (a._numerator == b.numerator and
                a._denominator == b.denominator)
    ...
《代码》和《代码》也是如此:

def __lt__(a, b):
    """a < b"""
    return a._richcmp(b, operator.lt)

def __gt__(a, b):
    """a > b"""
    return a._richcmp(b, operator.gt)
def\uu lt\uu(a,b):
“ab”
返回a.(b,operator.gt)
因此,
=
运算符将按预期工作。

查看,我们可以看到
\uuuuueq\uuuu
定义为:

def __eq__(a, b):
    """a == b"""
    if type(b) is int:
        return a._numerator == b and a._denominator == 1
    if isinstance(b, numbers.Rational):
        return (a._numerator == b.numerator and
                a._denominator == b.denominator)
    ...
《代码》和《代码》也是如此:

def __lt__(a, b):
    """a < b"""
    return a._richcmp(b, operator.lt)

def __gt__(a, b):
    """a > b"""
    return a._richcmp(b, operator.gt)
def\uu lt\uu(a,b):
“ab”
返回a.(b,operator.gt)
因此
=
运算符将按预期工作。

请注意“分数类继承自抽象基类numbers.Rational,并实现该类的所有方法和操作。”

查看,我们发现它“将实数分为子类型,并添加分子和分母属性,这些属性应该是最低值。”

例如,我们发现:

对于Complex,Real添加了处理实数的操作

简言之,它们是:对float的转换、math.trunc()、round(), math.floor()、math.ceil()、divmod()、/、%、=

最后:

这种类型的子类描述复数,并包括 处理内置复杂类型的操作。这些是: 转换为复数和布尔、实数、imag、+、-、*、/、abs(), 共轭()。除了-和!=这些都是抽象的

是的,这些操作是定义和记录的。

请注意“分数类继承自抽象基类numbers.Rational,并从该类实现所有方法和操作。”

查看,我们发现它“将实数分为子类型,并添加分子和分母属性,这些属性应该是最低值。”

例如,我们发现:

对于Complex,Real添加了处理实数的操作

简言之,它们是:对float的转换、math.trunc()、round(), math.floor()、math.ceil()、divmod()、/、%、=

最后:

这种类型的子类描述复数,并包括 处理内置复杂类型的操作。这些是: 转换为复数和布尔、实数、imag、+、-、*、/、abs(), 共轭()。除了-和!=这些都是抽象的


因此,是的,这些操作是定义和记录的。

您是否希望有不同的操作?确认什么?你能澄清你的问题是什么吗?是的,5/2==10/4应该为真,1/3>2/3应该为假。你的期望是什么?有什么不同吗?如果没有,你对此有什么疑问?这是有效的。我只是想确认这是否是比较分数对象的预期方式。你所说的“比较分数对象的预期方式”是什么意思?这些是比较运算符,您还希望使用什么来比较分数?我不确定是否存在任何类方法或其他东西(在任何父类中)。无论如何,我得到了答案。谢谢。你会期待一些不同的东西吗?确认什么?你能澄清你的问题是什么吗?是的,5/2==10/4应该为真,1/3>2/3应该为假。你的期望是什么?有什么不同吗?如果没有,你对此有什么疑问?这是有效的。我只是想确认这是否是比较分数对象的预期方式。你所说的“比较分数对象的预期方式”是什么意思?这些是比较运算符,您还希望使用什么来比较分数?我不确定是否存在任何类方法或其他东西(在任何父类中)。无论如何,我得到了答案。谢谢,谢谢。我不知道a==b表达式调用了“_eq”方法。谢谢。我不知道a==b表达式调用“_eq”方法。