反向 Class 方法无效

Reverse Class Method Not Working

所以我创建了一个简单的 class 方法来反转字符串,但它 returns 对我来说是原始的?我创建的方法在 class 之外工作,但由于某种原因,当我尝试实现它时它不起作用。

查看下面我的代码:

class Stack:

    def __init__(self):
        self.__items = []

    def push(self, item):
        self.__items.append(item)

    def pop(self):
        return self.__items.pop()

    def peek(self):
        return self.__items[len(self.__items)-1]

    def is_empty(self):
        return len(self.__items) == 0

    def size(self):
        return len(self.__items)

    def reverse(self):
        if len(self.__items) <= 1:
            return self.__items

        return self.__items.reverse(self.__items[1:]) + self.__items[0]        


s=Stack()
rev=input("Enter string to reverse; ")
s.push(rev)
print(s.reverse())

您需要反转 self.__items 中的每个字符串,而不是 self.__items 本身:

 def reverse(self):
        if not self.__items: # if items is empty return empty string
            return ""
        return " ".join(s[::-1] for s in self.__items)

self.__items[::-1] 将反转列表项而不是里面的 string/strings。

如果你想不切片:

   def reverse(self):
        if not self.__items:
            return ""
        out = ""
        for item in self.__items:
            temp = ""
            for i in range(len(item)-1, -1, -1):
                temp += item[i]
            out += temp
        return out

或递归:

def reverse(self):
    if not self.__items:
        return ""

    def recur(s):
        if not s:
            return ""
        return s[-1] + recur(s[:-1])
    return " ".join(recur(w) for w in self.__items)