python分数类_Python3 分数类,运算,最大公因数(In this problem, we will write a class that ...)...

本文介绍了如何用Python创建一个分数类Rational,实现包括初始化、简化、加减乘除运算、相等比较及转化为浮点数等功能。通过示例展示了类的使用,如`Fraction(10,20)`、`Fraction(10,30)`的运算和比较。" 115434280,8275408,Windows环境下安装配置JDK1.8.0_281教程,"['java', 'jdk', 'windows', '安装教程']

整理不易,如果本文帮助了您,请点个赞再走!! ->_

原题:

In this problem, we will write a class that can represent rational numbers, i.e. fractions

p/q.

(a) Create a class Rational which is initialized by two integers, p and q, the nominator

and denominator

(b) Add a method to print the rational number as p/q (the __str__ or __repr__ method

is useful).

(c) We would like to represent 10/20 by 1/2 instead, hence write a function that

computes the greatest common divisor, and ensure that every rational number is

simplified

(d) Add a method so that we can add two rational numbers with r1 + r2, here the

__add__() method is useful.

(e) Add a method to subtract two rational numbers. (__sub__)

(f) Add a method to multiply two rational numbers. (__mul__)

(g) Add a method to divide two rational numbers. (__truediv__)

(h) Add a method that compares whether two rational numbers are equal.

(i) Add a method to convert the rational number to a floating point (the __float__()

method maybe handy)

代码:

class Fraction:

def __init__(self,p,q):

self.nominator=p

self.denominator=q

self.normalize()

def __str__(self):

return str(self.nominator)+'/'+str(self.denominator)

def __add__(self,other):

a = self.nominator

b = self.denominator

c = other.nominator

d = other.denominator

p = a * d + c * b

q = b * d

return Fraction(p,q)

def __sub__(self,other):

a = self.nominator

b = self.denominator

c = other.nominator

d = other.denominator

p=a*d-c*b

q=b*d

return Fraction(p,q)

def __mul__(self,other):

a = self.nominator

b = self.denominator

c = other.nominator

d = other.denominator

p=a*c

q=b*d

return Fraction(p,q)

def __truediv__(self,other):

a = self.nominator

b = self.denominator

c = other.nominator

d = other.denominator

p=a*d

q=b*c

return Fraction(p,q)

def __eq__(self, other):

return self.nominator== other.nominator and self.denominator==other.denominator

def __float__(self):

return float(self.nominator/self.denominator)

def normalize(self):

def gcd(p,q):

r = 1

r = p % q

if r == 0:

return q

else:

return gcd(q, r)

divide=gcd(self.nominator,self.denominator)

self.nominator=int(self.nominator/divide)

self.denominator=int(self.denominator/divide)

a=Fraction(10,20)

b=Fraction(10,30)

c=Fraction(10,20)

print(a,b)

print(a+b)

print(a-b)

print(a*b)

print(a/b)

print(a==b,a==c)

print(float(a),float(b))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值