首页 > 解决方案 > 打印简单图的功能

问题描述

标签: pythonpython-3.x

解决方案


您在嵌套for循环的正确轨道上,但您需要非常仔细地考虑每个循环必须迭代的值。它们不应该从零开始,而是从数据中的最低值开始。另一个复杂之处是必须首先打印最上面的行,因此行的循环实际上必须从最高 y 值开始并向后迭代。

def render_plot(a):
    x = [point[0] for point in a]
    y = [point[1] for point in a]
    min_x = min(x)
    max_x = max(x)
    width = max_x - min_x + 1
    
    print('#' * (width + 2))
    for j in range(max(y), min(y) - 1, -1):
        s = '#'
        for i in range(min_x, max_x + 1):
            if (i, j) in a:
                s += '*'
            else:
                s += ' '
        print(s + '#')
    print('#' * (width + 2))
                
        
test = [(2, 3), (-1, 2), (1, -1), (0, 1)]
render_plot(test)
######
#   *#
#*   #
# *  #
#    #
#  * #
######

推荐阅读