无法弄清楚如何打印*&垂直空白而不是空间

时间:2014-11-11 01:15:17

标签: python python-2.7

我试着看其他线程,但仍然无法弄清楚。

我正在使用此代码:

numbers = [5,1,5,2,4]

for i in numbers:
  for x in range(0,i):
    print "*",
  print""

打印:

* * * * * 
* 
* * * * * 
* *
* * * *

我想要打印:

    *   *
    *   *   *
    *   *   *
    *   * * *
    * * * * *

我理解我必须对空格使用if语句或*

感谢任何帮助

3 个答案:

答案 0 :(得分:2)

实际上,您甚至可以将*用于3种不同的事情!

>>> from itertools import izip_longest
>>> for x in reversed(list(izip_longest(*['*'*n for n in numbers], fillvalue=' '))):
...     print ' '.join(x)
... 
*   *    
*   *   *
*   *   *
*   * * *
* * * * *

答案 1 :(得分:2)

numbers = [5,1,5,2,4]

for m in xrange(max(numbers)-1,0,-1):
  line = map (lambda x : '*' if x >= m else ' ' , numbers)
  print " ".join(line)

答案 2 :(得分:2)

numbers = [5,1,5,2,4]

for h in range(max(numbers), 0, -1):
   for x in numbers:
      if x >= h:
        print '*',
      else:
        print ' ',
   print ""

或更短的版本。

for h in range(max(numbers), 0, -1):
    print ' '.join('*' if x >= h else ' ' for x in numbers)