Warm tip: This article is reproduced from serverfault.com, please click

python-如何通过join方法在类中打印带有传递的元素的列表列表?

(python - How to print a list of lists with passed elements in a class via join method?)

发布于 2020-11-28 00:28:27

我有代码

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类,该类将在控制台中绘制游戏屏幕。

-_screen在其中创建一个字段,该字段将是字符列表的列表,大小hw

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

-该add_object方法必须将_screen列表项之一的值更改char字符。

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

-在get_input方法中,你可以使用该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 = [['*', '+', '*'], ['#', '#', '#' ]]输出

*+*
###

但是我写不正确。也许我对任务的理解不正确,所以请帮助我解决此问题

Questioner
Silya
Viewed
0
Aaj Kaal 2020-11-28 08:53:15

代码:

_screen = [['*', '+', '*'], ['#', '#', '#' ]]
print(*(''.join(str_arr) + '\n' for str_arr in _screen))

输出:

 *+*
 ###