当前位置: 首页 > news >正文

《Python数据结构与算法分析》代码

为Bradley N. Miller与David L. Ranum的《Python数据结构与算法分析(第2版)》(人民邮电出版社出版出版,封面如下图1+)一书 整理复现书中对于初学者来说不太容易理解的代码。代码已测试通过,方便各位初学者道友参考对照学习。

image

 图1 封面

第一章 导论

1.4 Python基础  逻辑门电路

文件名:LogicGate.py

  1 class LogicGate:
  2     """
  3     超类
  4     """
  5     
  6     def __init__(self,n):
  7         self.label = n
  8         self.output = None
  9         
 10     def getLabel(self):
 11         return self.label
 12     
 13     def getOutput(self):
 14         self.output = self.performGateLogic()
 15         return self.output
 16     
 17 class BinaryGate(LogicGate):
 18     """
 19     双输入门
 20     """
 21     
 22     def __init__(self,n):
 23         super().__init__(n)
 24         
 25         self.pinA = None
 26         self.pinB = None
 27         
 28     def getPinA(self):
 29         if self.pinA == None:
 30             return int(input("Enter Pin A input for gate " + \
 31                          self.getLabel() + "-->"))
 32         else:
 33             return self.pinA.getFrom().getOutput()
 34         
 35     def getPinB(self):
 36         if self.pinB == None:
 37             return int(input("Enter Pin B input for gate " + \
 38                          self.getLabel() + "-->"))
 39         else:
 40             return self.pinB.getFrom().getOutput()
 41         
 42             
 43             
 44     def setNextPin(self,source):
 45         if self.pinA == None:
 46             self.pinA = source
 47         elif self.pinB == None:
 48             self.pinB = source
 49         else:
 50             raise RuntimeError("Error: NO EMPTY PINS")
 51     
 52 class UnaryGate(LogicGate):
 53     """
 54     但输入门
 55     """
 56     
 57     def __init__(self,n):
 58         super().__init__(n)
 59         
 60         self.Pin = None
 61     
 62     def getPin(self):
 63         if self.Pin == None:
 64             return int(input("Enter Pin input for gate" + \
 65                          self.getLabel()+"-->"))
 66         else:
 67             return self.Pin.getFrom().getOutput()
 68         
 69     def setNextPin(self,source):
 70         if self.Pin == None:
 71             self.Pin= source
 72         else:
 73             raise RuntimeError("Error: NO EMPTY PINS")
 74             
 75 class AndGate(BinaryGate):
 76     
 77     def __init__(self,n):
 78         super().__init__(n)
 79         
 80     def performGateLogic(self):
 81         
 82         a = self.getPinA()
 83         b = self.getPinB()
 84         if a == 0 or b == 0 :
 85             return 0
 86         else:
 87             return 1
 88 class OrGate(BinaryGate):
 89     def __init__(self,n):
 90         super().__init__(n)
 91         
 92         self.PinA = None
 93         self.PinB = None
 94         
 95     def performGateLogic(self):
 96         
 97         a = self.getPinA()
 98         b = self.getPinB()
 99         if a == 1 or b == 1 :
100             return 1
101         else :
102             return 0
103         
104 class NotGate(UnaryGate):
105     
106     def __init__(self,n):
107         super().__init__(n)
108         
109     def performGateLogic(self):
110         a = self.getPin()
111         return 0 if a else 1  # return int(not a)
112     
113     
114 class Connector:
115     
116     def __init__(self,fgate,tgate):
117         self.fromgate = fgate
118         self.togate = tgate
119         
120         tgate.setNextPin(self)
121         
122     def getFrom(self):
123         return self.fromgate
124     
125     def getTo(self):
126         return self.togate
127     
128 
129             
130         
131         

测试代码如下:

文件名 test.py

import LogicGateg1 = LogicGate.AndGate('G1')
# print(g1.getOutput())

g2 = LogicGate.AndGate("G2")
# print(g2.getOutput())

g3 = LogicGate.OrGate("G3")
# print(g3.getOutput())

g4 = LogicGate.NotGate("G4")
# print(g4.getOutput())

c1 = LogicGate.Connector(g1, g3)
c2 = LogicGate.Connector(g2, g3)
c3 = LogicGate.Connector(g3, g4)print(g4.getOutput())

 

http://www.sczhlp.com/news/87485/

相关文章:

  • AI 是否绑架了云原生创新?
  • Windows 7 局域网打印机共享设置
  • SPFA求负环
  • 小破站下载图片素材网站哪个最多
  • 免费网站域名查询陕西省建设网三类人员成绩查询
  • 网站用什么字体百度 指数
  • 如何做网店网站wordpress CPT UI
  • 磁盘存储器
  • 多变量的递归2-组合总和问题(每个数字可以使用多次)
  • 戴尔Precision 7865 塔式工作站|安装rocky liunx 8.10
  • 基于STM32F411的AM2320温湿度采集程序
  • 品牌策划网站推荐收费 WordPress
  • wordpress中文下载站做网站公司运营部
  • 网站建设规划方案论文苏州房地产网站建设
  • 知名网站制作公司青岛分公司wordpress如何做产品页
  • wordpress幻灯片回收站在哪中国企业500强榜单2022
  • 网站建设公司 技术评估域名被锁定网站打不开
  • 建网站的程序东莞建设网东莞市住房和城乡建设
  • phpcms旅游网站模板做网站 域名 最快要多久
  • 兰州需要做网站的公司有哪些做网站送域名和邮箱
  • 可以自己做免费网站吗今天三亚最新通知
  • 做百度推广需要自己有个网站吗小程序代运营多少钱一个月
  • 网站自动答题脚本怎么做哪种类型的网站比较难做
  • 西安市网站建设公司无锡做食品网站的公司哪家好
  • 网站开发怎样导购网站做基础销量
  • 定兴做网站dedecms导购网站模板
  • 网站的结构与布局优化wordpress导航菜单加图片
  • ESP-IDF在vscode环境下编译速度
  • 企业做网站分哪几种个人网上怎么接装修活
  • 上海比较大的外贸公司有哪些seo排名赚下载