python-3.x - 在类之间切换并通过结果
问题描述
我正在尝试将不同的 PlugLead 添加到 PlugBoard 并提取组合。在第一堂课中,如果它们匹配或返回输入,我将从列表中提取一个字母。例如
lead = PlugLead("AG")
assert(lead.encode("A") == "G")
class PlugLead:
def __init__(self, c):
self.c = c
def encode(self, l):
c0 = self.c[0]
c1 = self.c[1]
if len(l) == 1 and c0 == l:
return c1
elif len(l) == 1 and c1 == l:
return c0
else:
return l
class Plugboard:
def __init__(self):
self.__head = 0
self.leads = []
self.c = []
def add(self, item):
if self.__head >= 10:
print("leads already got 10 items")
elif item in self.leads:
print(f"leads already have this item: {item}")
else:
self.leads.append(item)
self.__head += 1
return self.leads
def encode(self)
lines = plugboard.leads
for word in lines:
word = word.split(",")
PlugLead.encode(word)
在第二堂课中,我尝试添加多个组合,然后最后传递一个字母以查看其在类 PlugLead 中的匹配项,但无法在两者之间切换。在 PlugLead 类中,我有一个 add 函数,它允许将不同的组合添加到 10,然后我想从这个列表中对这些对的组合进行编码。例如
plugboard = Plugboard()
plugboard.add(PlugLead("SZ"))
plugboard.add(PlugLead("GT"))
plugboard.add(PlugLead("DV"))
plugboard.add(PlugLead("KU"))
assert(plugboard.encode("K") == "U")
assert(plugboard.encode("A") == "A")
解决方案
- 如果你想使用
PlugLead("{balabala}")
,你需要在创建实例时__new__
返回 a ,而不是.dict
__init__
- 你想要一个键值对
Plugboard
,它应该dict
不是list
- 修复一些其他错字和错误。
代码:
class PlugLead:
def __new__(self, c):
return {c[0]:c[1]}
class Plugboard:
def __init__(self):
self.__head = 0
self.leads = {}
def add(self, item):
if self.__head >= 10:
print("leads already got 10 items")
elif list(item.keys())[0] in self.leads.keys():
print(f"leads already have this item: {item}")
else:
self.leads.update(item)
self.__head += 1
return self.leads
def encode(self,key):
if key in self.leads:
return self.leads[key]
elif key in self.leads.values():
return list(self.leads.keys())[list(self.leads.values()).index(key)]
return key
plugboard = Plugboard()
plugboard.add(PlugLead("SZ"))
plugboard.add(PlugLead("GT"))
plugboard.add(PlugLead("DV"))
plugboard.add(PlugLead("KU"))
plugboard.add(PlugLead("KU"))
assert(plugboard.encode("K") == "U")
assert(plugboard.encode("U") == "K")
assert(plugboard.encode("A") == "A")
print(plugboard.encode("K"))
print(plugboard.encode("U"))
print(plugboard.encode("A"))
结果:
leads already have this item: {'K': 'U'}
U
K
A
推荐阅读
- node.js - 如果失败X次,nodejs重试功能
- parsing - 如何找出 ANTLR 语法无法解析输入,日志文件中的特殊时间戳
- php - 修剪单词但如果找到则在 html 元素的末尾停止
- excel-formula - 是否有一个 Excel 公式可以搜索单元格以进行某些测试并在其右侧返回搜索到的字母和 11 个数字?
- excel - 复制粘贴 - 相同的工作表和流程,但适用于整个电子表格
- mysql - MySQL - 多行 1 id & 将多列数据转换为逗号分隔的行
- excel - 具有三个输出的 Excel IF 和 AND
- java - 如何用 Jackson 序列化/反序列化 DefaultMutableTreeNode?
- css-selectors - 无法在柏树中找到元素
- wpf - 如何在 WPF 中平滑地将绑定的属性值从旧值设置为新值