如何操作在序列n内打开以下开关的配电盘?Python 3x

2024-04-24 11:00:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想建造一个具有以下特性的类交换机:

  • 当我可以创建一组交换机时,我应该可以创建一组交换机 所有开关应在“关闭”位置启动

  • 如果我打印一个交换机,它应该打印出以下行的内容:“以下开关打开:1 3 5 7 9”

  • 如果我用n作为整数调用switch(n),它应该ip第n个lightswitch的状态

  • 如果我用n作为整数调用switch every(n),它应该ip每个n'th lightswitch的状态

我应该能够编写一段全局代码来解决上述lightswitch问题。

这是我目前为止的工作,第一个是类LightSwitch

  • 如果开关打开,它将翻转并关闭

  • 如果开关关闭,它将翻转并打开

class LightSwitch():

    def __init__(self, mode):
            self.switch = mode

    def __str__(self):
        if self.switch == True:
            return ("I am on")

        if self.switch == False:
            return ("I am off")        

    def turn_on(self):
        self.switch = True

    def turn_off(self):
        self.switch = False

    def flip(self):
        if self.switch == True:
            self.switch = False
        else:
            self.switch = True

对于SwitchBoard类,这是我所拥有的:

^{pr2}$

这行不通,我正在使用一个列表来附加关闭开关的数量,但我不确定如何编写全局代码来解决此问题,例如打开序列中的开关,或者可能缺少某些内容,请帮助。在


Tags: 代码selfipfalsetrue内容if状态
1条回答
网友
1楼 · 发布于 2024-04-24 11:00:28

要调用方法switch,请使用self.switch(i)而不是switch(i)

def switch_every(self, n):
    for i in range(0,len(self.switches), n):
        self.switch(i)   # <  Change here

当您调用

^{pr2}$

LightSwitch.__str__方法改为LightSwitch.__repr__

^{3}$

这是因为,当您打印一个列表时,其内容的repr会被打印出来。在


LightSwitch.flip方法可以简化为:

 def flip(self):
     self.switch = False if self.switch else True

使用conditional expression。在

相关问题 更多 >