Python 如何通过join方法打印类中传递了元素的列表列表?

Python 如何通过join方法打印类中传递了元素的列表列表?,python,list,class,join,methods,Python,List,Class,Join,Methods,我有密码 class Render(): def __init__(self): pass def init_screen(self, h, w): raise NotImplementedError def add_object(self, char, x, y): raise NotImplementedError def draw_screen(self): raise NotImplem

我有密码

class Render():
    def __init__(self):
        pass

    def init_screen(self, h, w):
        raise NotImplementedError

    def add_object(self, char, x, y):
        raise NotImplementedError

    def draw_screen(self):
        raise NotImplementedError

    def get_input(self):
        raise NotImplementedError
有一项任务: 我需要创建一个ShellRenderer类,它将在控制台中绘制游戏屏幕

-在其中创建一个_屏幕字段,它将是一个字符列表列表,大小为h×w

-调用init_screen方法时用空格初始化它

-add_object方法必须将其中一个屏幕列表项的值更改为char字符

-draw_screen方法应通过调用print来打印列表

-在get_输入法中,可以使用input函数获取用户输入。返回用户输入的字符串

我几乎做了所有的事情:

class ShellRender(Render):
    def init_screen(self, h, w):
        self.h = h
        self.w = w
        self._screen = [[[' '] for i in range(w)] for j in range(h)]

    def add_object(self, char, x, y):
        self._screen[y][x] = char

    def draw_screen(self):
        print("\n".join(map(str, self._screen)))  # here is a mistake...

    def get_input(self):
        return input()
但是我无法在draw_screen方法中打印列表列表。我认为有必要使用\n.join map str。。。所以当_screen=[['*','+','*']时,[,]]输出应该是

*+*
###
但是我写得不对。可能我没有正确理解该任务,因此请帮助我使用mapstr、self解决此问题。\您正在将行列表转换为字符串。意思是[1,2,3]将变成“[1,2,3]”

在全部打印出来之前,您应该将每一行合并起来

def draw_screen():
        print("\n".join(map(''.join, (_screen))))
使用mapstr、self.\u屏幕可以将行列表转换为字符串。意思是[1,2,3]将变成“[1,2,3]”

在全部打印出来之前,您应该将每一行合并起来

def draw_screen():
        print("\n".join(map(''.join, (_screen))))
self.\u screen是一个列表列表,当您使用mapstr时,self.\u screen就是在列表中使用str。当您创建屏幕时,还有一个额外的[]。这会奏效的

class Render():
    def __init__(self):
        pass

    def init_screen(self, h, w):
        raise NotImplementedError

    def add_object(self, char, x, y):
        raise NotImplementedError

    def draw_screen(self):
        raise NotImplementedError

    def get_input(self):
        raise NotImplementedError

class ShellRender(Render):
    def init_screen(self, h, w):
        self.h = h
        self.w = w
        self._screen = [[' ' for i in range(w)] for j in range(h)]

    def add_object(self, char, x, y):
        self._screen[y][x] = char

    def draw_screen(self):
        print("\n".join(map(draw_screen_line, self._screen)))  # here is a mistake...

    def get_input(self):
        return input()

def draw_screen_line(screen_line):
    return "".join(screen_line)
self.\u screen是一个列表列表,当您使用mapstr时,self.\u screen就是在列表中使用str。当您创建屏幕时,还有一个额外的[]。这会奏效的

class Render():
    def __init__(self):
        pass

    def init_screen(self, h, w):
        raise NotImplementedError

    def add_object(self, char, x, y):
        raise NotImplementedError

    def draw_screen(self):
        raise NotImplementedError

    def get_input(self):
        raise NotImplementedError

class ShellRender(Render):
    def init_screen(self, h, w):
        self.h = h
        self.w = w
        self._screen = [[' ' for i in range(w)] for j in range(h)]

    def add_object(self, char, x, y):
        self._screen[y][x] = char

    def draw_screen(self):
        print("\n".join(map(draw_screen_line, self._screen)))  # here is a mistake...

    def get_input(self):
        return input()

def draw_screen_line(screen_line):
    return "".join(screen_line)
代码:

输出:

 *+*
 ###
代码:

输出:

 *+*
 ###
当他做自我的时候,他有额外的列表。正确的是self.[u screen=[[''对于rangew中的i]对于rangeh中的j]并且当他做self.[u screen=[['']对于rangew中的i]对于rangeh中的j]时,他在那里有额外的列表。正确的是self._screen=[[''表示范围w中的i]表示范围h中的j]