我正在尝试创建需要垂直打印的图像:
从for循环中,我可以通过缩进新行来打印图像;但是,我希望图像逆时针旋转90度(这是转置吗?)。
我尝试使用from itertools import zip_longest
,但它给出了:
TypeError:zip_longest参数#1必须支持迭代
class Reservoir:
def __init__(self,landscape):
self.landscape = landscape
self.image = ''
for dam in landscape:
self.image += '#'*dam + '\n'
print(self.image)
landscape = [4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0,
1, 1, 2, 5, 6, 5, 2, 2, 2, 3, 3, 3, 4, 5, 3, 2, 2]
lake = Reservoir(landscape)
print(lake)
答案 0 :(得分:2)
我不知道你是否会找到一个功能或者lib来为你做这件事。但您可以手动编码此轮换。
您不想在此处显示真实图像,而是要打印代表景观的字符。你必须打印"图像"逐行,但由于您的横向数组代表'#'你想要在每个列中,你必须遍历你想要的总行数,并且对于该行中的每个字符,打印一个&#39>。 '或者#'#'取决于相应的格局列值
使用
h = max(landscape)
通过查找横向值的最大值来计算要打印的总行数。
然后,你循环遍历这些行
for line in reversed(range(h)):
在该循环中,line
取值6,5,4等
对于每一行,您必须遍历整个横向数组,以确定每列是否要打印空格或#'#,取决于横向列的值( v
)和当前line
for v in self.landscape:
self.image += ' ' if line >= v else '#'
完整的计划:
class Reservoir:
def __init__(self, landscape):
self.landscape = landscape
h = max(landscape)
self.image = ''
for line in reversed(range(h)):
for v in self.landscape:
self.image += ' ' if line >= v else '#'
self.image += '\n'
landscape = [4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 5, 6, 5, 2, 2, 2, 3, 3, 3, 4, 5, 3, 2, 2]
lake = Reservoir(landscape)
print(lake.image)
结果:
#
### #
# ### ##
## ### ######
#### ###############
###### #################