反向类方法不起作用(Reverse Class Method Not Working)

编程入门 行业动态 更新时间:2024-10-27 02:30:20
反向类方法不起作用(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 out

Or 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)

更多推荐

本文发布于:2023-07-22 20:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1223295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不起作用   方法   Reverse   Working   Method

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!