反向类方法不起作用(Reverse Class Method Not Working)
所以我创建了一个简单的类方法来反转一个字符串然后它返回给我原始的? 我创建的方法在类之外工作,但由于某种原因,当我尝试实现它时它不会。
请参阅下面的代码:
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())So I created a simple class method to reverse a string and yet it returns to me the original? The Method that I created works outside of the class but for some reason it does not when I try to implement it.
See my code below:
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]将反转列表项而不是内部的字符串/字符串。
如果你想在没有切片的情况下这样做:
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)You need to reverse each string in self.__items not self.__items itself:
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] will reverse the list items not the string/strings inside.
If you wanted to do it without slicing:
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 outOr recursively:
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)更多推荐
发布评论