Python 从列表中获取数字并绘制图案

Python 从列表中获取数字并绘制图案,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有以下列表[2,7,4]。我需要从列表中获取数字,并希望得到如下输出: * * * * * * * * * * * * * [2, 7, 4] 我写了以下内容: a=eval(input()) for j in range(len(a)): print(a[j],end=" ") for i in range(0,a[j]): print(" *

我有以下列表
[2,7,4]
。我需要从列表中获取数字,并希望得到如下输出:

    *
    *
    *
    *  *
    *  *
 *  *  *
 *  *  *
[2, 7, 4]
我写了以下内容:

a=eval(input())

for j in range(len(a)):
    
    print(a[j],end=" ")
    for i in range(0,a[j]):
        
        print(" *",end=" ")
            
    print()   
但当我给出这个列表时,我得到了这个输出:

2**
7******
4****


打印总是从上到下进行的,因此您需要在数组中找到最大的数字,以便能够从上到下打印

然后你必须从这个数字循环回到零,并在适当的地方打印一个星号。您可以将本例中的数字视为高度。例如,如果高度为6,则必须仅在第二列中打印星号(因为7>=6),如果高度为3,则需要在最后两列中打印星号(因为7>=3和4>=3)。这是它在代码中的外观:

arr=[2,7,4]
最大值=最大值(arr)
#根据数组确定是否需要打印星号或空格
#元素和当前高度。
def calc_输出(阵列元素、当前高度):
如果数组元素>=当前高度:
返回“*”
返回“”
#从max_num循环到1。
对于范围内的x(最大数量,0,-1):
line=“”
#对于arr中的每个元素,确定是否需要打印星号。
对于arr中的元素:
行+=“{}”。格式(计算输出(elem,x))
打印(行)
#打印用空格分隔的arr元素。
打印(*arr)
这将产生:

  *   
  *   
  *   
  * * 
  * * 
* * * 
* * * 
2 7 4
它也适用于任何其他数字列表。例如,使用
arr=[4,1,3,0,4]

*       * 
*   *   * 
*   *   * 
* * *   * 
4 1 3 0 4

如果你考虑以下问题,你可以解决这个问题:

a=eval(input())

for j in range(len(a)):
    
    print(a[j],end=" ")
    for i in range(0,a[j]):
        
        print(" *",end=" ")
            
    print()   
  • 您需要知道列表中的最大值,以便知道需要打印多少行。考虑到
    [2,7,4]
    是您的列表,
    7
    是最大值

  • 您可以使用for循环和最大值(
    max\u value
    )的值轻松打印以下图案:

  • 哪个输出是:

    7
    6
    5
    4
    3
    2
    1
    
  • 对于列表中的每个元素,如果列表中的元素小于或等于For循环中的当前索引
    i
    ,则在每行打印
    '*'
    。否则,将打印
    ''

  • 打印一行后,需要移到下一行

  • 最后,您只需打印列表

  • 下面的代码是上述算法的实现。我添加了显示算法步骤的在线注释:

    l=l=[2,7,4]
    最大值=最大(l)
    对于范围内的i(最大值,0,-1):
    对于l中的e:
    打印(“*”如果e>=i else“”,则结束=“”)
    打印()
    打印(*l)
    最大值=最大(l)#1
    对于范围内的i(最大值,0,-1):#2
    对于l中的e:
    打印('*'如果e>=i else',end='')#3
    打印()#4
    打印(*l)#5
    
    输出

      *   
      *   
      *   
      * * 
      * * 
    * * * 
    * * * 
    2 7 4
    

    请记住,这将适用于
    0
    9
    (包括)之间列表中的元素。

    它不写空格,而是不写空格。可能是因为我用python 3编写的。如果您将这一行
    line+=“{}”格式(calc_输出(elem,x))
    更改为这一行
    line+=%s”%calc_输出(elem,x)
    ?修复了,谢谢…我已经为您的问题添加了一个答案,希望它是清楚的。