如何让我的新pyhon班回归工作?

2024-10-01 17:37:12 发布

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

对于学校,我必须用python制作一个链表,其中包含所有有用的命令。我和一个朋友在他的windows电脑上做的,效果很好。 问题是,当我在Linux、Arch或Debian docker上启动它时,它返回:

>>> A= Liste(1,2,3,4,3,5,6,7)
>>> A
<Liste.Liste object at 0x7f26a0903278>

我可以复制粘贴代码,但作为一名法国人,我的教授不希望我用英语编写代码

class Liste: #création de la classe


#initialisation de l'objet
    def __init__(self, *elements):
        self.list = [None, None] #inititialisation de la liste
        for element in elements: #pour chaque élémment de la liste
            if self.list[0] == None: #si le 1er élément la liste est vide
                self.list[0] = element #le 1er élement de la liste devient élément
                suivant = self.list #et suivant deviens la liste
            else:
                suivant[1] = [element, None] #sinon, le 2e élément de la liste devient [élément, None]
                suivant = suivant[1] #et suivant avance dans la liste chainée

#ajouter un élément à la liste
    def ajouter(self, element):
        suivant = self.list #suivant devient la liste
        while suivant[1] != None: #tant que le deuxième émént du duo n'est pas None
            suivant = suivant[1] #suivant avance dans la liste chainée
        suivant[1] = [element, None] #quand suivant à atteind le None, il remplace le None par l'élément

#inserer un élément dans une liste à un indice donné
    def inserer(self, index, element):
        suivant = self.list #suivant devient la liste
        for _ in range(index-1): #on atteind le
            suivant = suivant[1] #bon rang
        suivant[1] = [element, suivant[1]] #on insère le bon élément à la bonne place

#acceder à un rang particulier
    def acceder(self, index):
        suivant = self.list #suivant devient la liste
        for _ in range(index): #on atteind le bon rang
            suivant = suivant[1]
        return suivant[0]

#longueur de la liste avec len
    def __len__(self):
        suivant = self.list #suivant devient la liste
        i = 0 #on crée un indice pour compter
        if self.list[0] == None: #si le première élément du duo est vaut None
            return i #la liste fait i éléments
        else:
            while suivant[1] != None: #sinon, tant que la dervière valeur du duo n'est pas nulle
                i +=  1 # i prend un point en plus
                suivant = suivant[1] #et on avance dans la liste
        return i+1 # et on retourne i+1

#supprimer un valeur à un indice donné
    def supprimer_ind(self, index):
        suivant = self.list #suivant devient la liste
        for _ in range(index-1): #on se déplace
            suivant = suivant[1] #jusqu'à l'élément que l'on veut supprimer
        suivant[1] =  suivant[1][1] #et on l'écrase avec la valeur suivante

#pour remplacer la liste
    def remplacer(self, index, valeur):
        suivant = self.list #On lui donne la valeur de la liste
        for _ in range(index): #on se déplace
            suivant = suivant[1] #jusqu'à l'élément que l'on veut modifier
        suivant[0] = valeur #et on modifie la valeur

    def supprimer_val(self, valeur):
        ancien = None
        suivant = self.list #On lui donne la valeur de la liste
        while suivant[0] != valeur: #tant que la valeur de suivant[0] n'est pas égale à la valeur demandée,
            ancien = suivant #on sauvegarde suivant
            suivant = suivant[1] #et on avance dans la liste
        if ancien == None: #si ancien est vide, alors on supprime la premiève valeur
            suivant[0] = suivant[1][0]
            suivant[1] = suivant[1][1]
        else:
            ancien[1] = suivant[1] #sinon, on remplace ancien par suivant[1]

#on vide la liste
def vider(self):
    self.list = [None, None] #on remet à zéro la valeur de la liste

    def __repr__(self):
        suivant = self.list #suivant devient la liste
        objet = "|"
        while suivant[1] != None: #tant que le deuxième émént du duo n'est pas None
            objet += str(suivant[0]) + ", "
            suivant = suivant[1] #suivant avance dans la liste chainée
        objet += str(suivant[0]) + "|"
        return f'{objet}'



Tags: selflenoneindexondefdela
1条回答
网友
1楼 · 发布于 2024-10-01 17:37:12

__repr__magic负责对象表示格式。你把def vider ...行中的缩进搞乱了。下面是一个快速修复:

    #on vide la liste
    def vider(self):
        self.list = [None, None] #on remet à zéro la valeur de la liste

    def __repr__(self):
        suivant = self.list #suivant devient la liste
        objet = "|"
        while suivant[1] != None: #tant que le deuxième émént du duo n'est pas None
            objet += str(suivant[0]) + ", "
            suivant = suivant[1] #suivant avance dans la liste chainée
        objet += str(suivant[0]) + "|"
        return f'{objet}'

Liste(1, 2, 3)按预期返回|1, 2, 3|

相关问题 更多 >

    热门问题