<p>目前你有一个循环输出相应的星号,直到数字达到。您还需要考虑空白。我要做的是输出一个空格,该空格对应于正在打印的星号的当前索引号。在</p>
<p>这就是说,如果传递给函数的列表是<code>[1,2,3]</code>,那么在第一次迭代中,应该打印两个空格和一个*号:<code>' *'</code>在下一次迭代中,应该打印一个空格和两个*:<code>' **'</code>在第三次迭代中,应该打印三个*:<code>'***'</code></p>
<h2>编辑:</h2>
<p>尽管corn3lius的回答已经非常棒了,我还是继续编写我的实现代码。我在这里包括了他和医生的测试,所以你可以看到它是如何工作的。在</p>
<p>我的答案和corn3lius的答案的主要区别在于,左边的空白是硬编码在corn3lius的答案中的,而我的答案是根据给定列表中的最大数量生成的。在</p>
<pre><code>def BarGraphify1(nums):
'''
see http://stackoverflow.com/a/23257715/940217
>>> BarGraphify1([1,2,3])
*
**
***
'''
for num in nums:
print " {:>10}".format("*" * num)
def BarGraphify2(nums):
'''
>>> BarGraphify2([1,2,3])
*
**
***
>>> BarGraphify2([1,3,2])
*
***
**
'''
output = []
maxVal = max(nums)
for n in nums:
space = (maxVal-n)*' '
asterisks = n*'*'
output.append(space + asterisks)
print '\n'.join(output)
if __name__ == '__main__':
import doctest
doctest.testmod()
</code></pre>
<h2>编辑2:</h2>
<p>现在我看到OP需要编辑中显示的列,我重新编写了我的解决方案以使用<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html" rel="nofollow">numpy.transpose</a>函数。大部分内容保持不变,但现在我将整个过程视为行和列,然后转置二维数组以获得所需的列。在</p>
^{pr2}$