类 继承 (均未写完)

一、Fraction类(分数)


class Fraction:def __init__(self, top, bottom):if bottom == 0:print("Error:分子分母不能为0")else:n = gcd(top, bottom)self.num = top // nself.den = bottom // n# 分数的输出def __str__(self):return str(self.num) + "/" + str(self.den)# 分数之间的数值运算def __add__(self, otherfraction):newnum = self.num * otherfraction.den + self.den * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum , newden)def __sub__(self, otherfraction):newnum = self.num * otherfraction.den - self.den * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum, newden)def __mul__(self, otherfraction):newnum = self.num * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum, newden)def __truediv__(self,otherfraction):# 除数为0时,报错if otherfraction.num == 0:print("Error,contradictory to divising rule, otherfraction can not be zero.")else:newnum = self.num*otherfraction.dennewden = self.den*otherfraction.numreturn Fraction(newnum,newden)def __eq__(self, other):firstnum = self.num * other.densecondnum = self.den * other.numreturn firstnum == secondnum# greatest commom divisor (GCD) 最大公因数
def gcd(m, n):while m % n != 0:oldm = moldn = nm = oldnn = oldm % oldnreturn nif __name__ == "__main__":f1 = Fraction(3,5)f2 = Fraction(2,4)print(f"{f1},{f2}")print(f1.__add__(f2))print(f1.__sub__(f2))print(f1.__mul__(f2))print(f1.__truediv__(f2))

加入比较运算

class Fraction:def __init__(self, top, bottom):if bottom == 0:print("Error:分子分母不能为0")else:# 判断分子分母是否为整数if isinstance(top, int) and isinstance(bottom, int):n = gcd(top, bottom)self.num = top // n  # 分子self.den = bottom // n  # 分母# 防止输入的分母为负数if self.den < 0:self.den = abs(self.den)self.num = self.num * -1else:print("Error,top or bottem is not int.")# 分数的输出def __str__(self):return str(self.num) + "/" + str(self.den)# 分数之间的数值运算def __add__(self, otherfraction):newnum = self.num * otherfraction.den + self.den * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum, newden)def __sub__(self, otherfraction):newnum = self.num * otherfraction.den - self.den * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum, newden)def __mul__(self, otherfraction):newnum = self.num * otherfraction.numnewden = self.den * otherfraction.denreturn Fraction(newnum, newden)def __truediv__(self, otherfraction):# 除数为0时,报错if otherfraction.num == 0:print("Error,contradictory to divising rule, otherfraction can not be zero.")else:newnum = self.num * otherfraction.dennewden = self.den * otherfraction.numreturn Fraction(newnum, newden)# 分数之间的比较关系# lt x<ydef __lt__(self, otherfraction):if self.num * otherfraction.den < self.den * otherfraction.num:print("%s is less" % self.__str__())else:print("%s is less" % otherfraction.__str__())# le x<=ydef __le__(self, otherfraction):if self.num * otherfraction.den < self.den * otherfraction.num:print("%s is less or equal" % self.__str__())else:print("%s is less or equal" % otherfraction.__str__())# ne x!=ydef __ne__(self, otherfraction):if self.num * otherfraction.den == self.den * otherfraction.num:print("%s is equal" % self.__str__())else:print("%s is not equal" % otherfraction.__str__())# gt x>ydef __gt__(self, otherfraction):if self.num * otherfraction.den > self.den * otherfraction.num:print("%s is greater" % self.__str__())else:print("%s is greater" % otherfraction.__str__())# ge x>=ydef __ge__(self, otherfraction):if self.num * otherfraction.den >= self.den * otherfraction.num:print("%s is greater or equal" % self.__str__())else:print("%s is greater or equal" % otherfraction.__str__())# greatest commom divisor (GCD) 最大公因数
def gcd(m, n):while m % n != 0:oldm = moldn = nm = oldnn = oldm % oldnreturn nif __name__ == "__main__":f = Fraction(2.1, 10)

二、逻辑门

# 逻辑门类
class LogicGate:def __init__(self, n):self.label = nself.output = Nonedef getLabel(self):return self.labeldef getOutput(self):self.output = self.performGateLogic()return self.outputdef setNextPin(self, source):if self.pinA == None:self.pinA = sourceelse:if self.pinB == None:self.pinB = sourceelse:raise RuntimeError:("Error:NO EMPTY PINS")# 子类从父类继承(两输入)
class BinaryGate(LogicGate):def __init__(self, n):super().__init__(n)  # 首先使用super函数来调用其父类的构造方法。self.pinA = Noneself.pinB = Nonedef getPinA(self):# 如果输入没有与任何逻辑门相连接if self.pinA == None:return int(input("Enter Pin A input for gate" + self.getLabel() + "-->"))# 如果有了连接else:return self.pinA.getFrom().getOutput()def getPinB(self):return int(input("Enter Pin B input for gate" + self.getLabel() + "-->"))# 单输入
class UnaryGate(LogicGate):def __init__(self, n):super().__init__(n)self.pin = Nonedef getPin(self):return int(input("Enter Pin input for gate" + self.getLabel() + "-->"))# 两输入的与门类的构建
class AndGate(BinaryGate):def __init__(self, n):super().__init__(n)def performGateLogic(self):a = self.getPinA()b = self.getPinB()if a == 1 and b == 1:return 1else:return 0class Connector:def __init__(self, fgate, tgate):self.fromgate = fgateself.togate = tgatetgate.setNextPin(self)def getFrom(self):return self.fromgatedef getTo(self):return self.togateg1 = AndGate("G1")
print(g1.getOutput())

三、简单基础的例子

class Employee:def __init__(self, name, id):self.name = nameself.id = iddef print_info(self):print(f"员工姓名:{self.name},员工工号:{self.id}")class FullTimeEmployee(Employee):def __init__(self, name, id, monthly_salary):super().__init__(name, id)self.monthly_salary = monthly_salarydef calculate_monthly_pay(self):return self.monthly_salaryclass PartTimeEmployee(Employee):def __init__(self, name, id, daily_salary, work_days):super().__init__(name, id)self.daily_salary = daily_salaryself.work_days = work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_dayszhangsan = FullTimeEmployee("张三","1001",6000)
lisi = PartTimeEmployee("李四","1002",200,40)
zhangsan.print_info()
lisi.print_info()
print(zhangsan.calculate_monthly_pay())
print(lisi.calculate_monthly_pay())
class Student:def __init__(self,name,student_id):self.name = nameself.id = student_idself.score = {"语文":0,"数学":0,"英语":0}def set_grade(self,course,grade):if course in self.score:self.score[course] = gradedef print_score(self):for course in self.score:print(f"{course}:{self.score[course]}")chen = Student("小陈","100")
chen.set_grade("语文",90)
chen.set_grade("数学",10)
chen.print_score()
# zeng = Student("小曾","101")
# print(chen.name)
# zeng.set_grade("数学",100)
# print(zeng.score)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Iterator接口用法详解(Java)

Iterator接口 Iterator 接口是 Java 集合框架中的一个核心接口&#xff0c;用于遍历集合中的元素。它定义了一种迭代器的行为&#xff0c;允许按顺序访问集合中的元素&#xff0c;而不需要暴露集合内部的结构。 当你使用 Iterator 接口遍历集合时&#xff0c;你实际上在使用设…

进阶级Python编程题(5)洛谷(不高兴的津津)和index函数的用法

题目描述 津津上初中了。妈妈认为津津应该更加用功学习&#xff0c;所以津津除了上学之外&#xff0c;还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴&#xff0c;而且上得越久就会越不高兴。假…

利用Sentinel解决雪崩问题(二)隔离和降级

前言&#xff1a; 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还会因为其它原因而故障。而要将这些故障控制在一定范围避免雪崩&#xff0c;就要靠线程隔离(舱壁模式)和熔断降级手段了&#xff0c;不管是线程隔离还是熔断降级&#xff0c;都是对客户端(调…

vue源码解析——v-if和v-for哪个优先级高,如何避免两者同时使用

首先&#xff0c;官方不推荐v-if和v-for在同一个元素上使用。其次&#xff0c;如果两者同时使用&#xff0c;v-if和v-for的优先级怎么确定&#xff1f;在vue2和vue3中这两者的优先级顺序不一样。vue2是v-for优先&#xff0c;条件不存在时也会渲染多个注释节点。在vue3中进行了改…

基于51单片机的无线病床呼叫系统设计—LCD1602显示

基于51单片机的无线病床呼叫系统 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.病人按下按键&#xff0c;LCD1602显示对应的床位号&#xff1b; 2.多人同时呼叫&#xff0c;显示屏同时显示&#xf…

文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据

文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg&#xff08;美国哈佛医学院&#xff09; 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…

第17天:信息打点-语言框架开发组件FastJsonShiroLog4jSpringBoot等

第十七天 本课意义 1.CMS识别到后期漏洞利用和代码审计 2.开发框架识别到后期漏洞利用和代码审计 3.开发组件识别到后期漏洞利用和代码审计 一、CMS指纹识别-不出网程序识别 1.概念 CMS指纹识别一般能识别到的都是以PHP语言开发的网页为主&#xff0c;其他语言开发的网页识…

Unix环境高级编程-学习-09-多线程之读写锁与条件变量(包含线程池的部分实现与测试验证)

目录 一、多线程相关文章链接 二、自由抒发 1、读写锁 2、条件变量 三、函数介绍 1、pthread_rwlock_init &#xff08;1&#xff09;声明 &#xff08;2&#xff09;作用 &#xff08;3&#xff09;参数 &#xff08;4&#xff09;返回值 &#xff08;5&#xff09;…

深度学习学习日记4.14 数据增强 Unet网络部分

数据增强 transforms.Compose([&#xff1a;这表示创建一个转换组合&#xff0c;将多个数据转换操作串联在一起 transforms.RandomHorizontalFlip()&#xff1a;这个操作是随机水平翻转图像&#xff0c;以增加数据的多样性。它以一定的概率随机地水平翻转输入的图像。 transfo…

C#去掉字符串中所有匹配的字符String.Replace方法

在C#中&#xff0c;如果你想要去掉字符串中所有匹配的字符&#xff0c;你可以使用String.Replace方法。这个方法会找到字符串中所有匹配的子字符串&#xff0c;并将它们替换为另一个字符串。如果你想要去掉这些字符&#xff0c;你可以将它们替换为空字符串&#xff08;"&q…

linux redis部署教程

单节点部署&#xff1a; 单节点部署 Redis 非常简单&#xff0c;只需要在一台服务器上安装 Redis 服务即可。以下是在 Linux 环境下的单节点部署步骤&#xff1a; 安装 Redis&#xff1a;打开终端&#xff0c;并执行以下命令来更新软件包列表并安装 Redis 服务器&#xff1a;…

29、链表-删除链表的倒数第N个结点

思路: 首先找到倒数第N个结点 第一种方式 先统计链表的节点数&#xff0c;然后再次遍历len-N即可得到倒数第N个结点&#xff0c;然后将前一个节点的next指针指向next的下一个节点使用快慢指针&#xff0c;快指针先跑N个结点然后慢指针开始跑&#xff0c;等快指针到达尾节点后…

多因子模型的因子选取

经典的Alpha模型是一些多因子模型&#xff0c;用于预测Alpha模型的信息比率&#xff0c;从而来判断判断模型的好坏。这里我们所说的信息比率是相对收益率除以非系统性风险&#xff0c;所以当我们在进行因子选择的时候&#xff0c;我们一定不能选取系统性风险模型&#xff08;例…

免费VPS云服务器汇总,最长永久免费使用

目前云服务器市场竞争很激烈&#xff0c;为了方便吸引上云&#xff0c;很多云计算服务商提供免费试用云服务器&#xff0c;下面给大家整理汇总一下免费VPS云服务器&#xff0c;最长永久免费使用&#xff01; 一、雨云&#xff08;优惠码:ABC&#xff09; 活动地址&#xff1a;…

jquery如何在当前元素的前面添加一个同级子元素

在jQuery中&#xff0c;如果你想在当前元素的前面添加一个同级子元素&#xff0c;你可以使用.before()方法。但是&#xff0c;请注意&#xff0c;.before()方法实际上是在当前元素的前面插入内容&#xff0c;而不是作为它的子元素。如果你想在当前元素内部、但在其所有子元素之…

2D AI交互数字人:赋能文旅、金融、政务、教育行业数字化转型

AI交互数字人结合了语音合成、语音识别、语义理解、图像处理、机器翻译、虚拟形象驱动等多项AI核心技术&#xff0c;可以提供服务导览、业务咨询、语音互动交流、信息播报等智能服务。 其中&#xff0c;2D AI交互数字人是采集真人视频&#xff0c;通过AI训练&#xff0c;生成逼…

认识OpenEuler操作系统

引言 在信息技术日新月异的时代&#xff0c;开源软件已成驱动创新的核心动能&#xff0c;其中&#xff0c;OpenEuler作为一款冉冉升起的开源操作系统典范&#xff0c;凭借其对开源精神的坚守与技术创新的不懈追求&#xff0c;自亮相以来便引发了全球关注。本文将全方位深挖Open…

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…

使用新一代一站式 AI Bot 开发平台扣子coze,搭建我的第一个AI Bot(前端魔法师) ,

目录 1.概述​ 2.功能与优势 3.使用扣子 4.人设与回复逻辑 5.添加插件 6.预览与调试 7.发布bot Store 8.环境大家体验&#xff08;给大家内置了比较屌的插件&#xff09; 9.推荐阅读&#xff1a; 1.概述​ 扣子是新一代一站式 AI Bot 开发平台。无论你是否有编程基础…

揭示API威胁的攻击趋势(下)

文章目录 前言三、行业趋势凸显供应链攻击危险1、案例研究2、API成为新的数据泄露载体四、提高可见性:管理API资产生命周期的关键1、照亮阴影2、实现文档化3、强化API态势4、加强威胁检测和响应5、发展更强大的进攻性方法前言 API是组织数字化转型的核心。然而,API的存在也增…