<p>从伪代码开始,用清晰的英语仔细地列出你想要程序做什么</p>
<ol>
<li>从用户处获取号码</李>
<li>从1到用户的号码(含1)遍历每个号码</李>
<li>在每行上,打印一定数量的空格,从比用户数字少一个开始,一直到零(包括零)</李>
<li>在每一行上,还打印一定数量的散列符号,从一开始,一直到用户的编号,包括在内</李>
</ol>
<p>现在你可以把它变成Python了</p>
<p>首先,从用户那里得到一个数字。看起来您使用的是python2,因此可以使用<code>input()</code>或尝试更安全的<code>raw_input()</code>并将其转换为<code>int()</code></p>
<pre><code>num = input()
</code></pre>
<p>从一开始遍历每个数字直到用户的数字(包含在内),意味着在<code>range</code>上的<code>for</code>循环。在python2上,使用<code>xrange()</code>是更好的做法</p>
<pre><code>for i in xrange(1, num+1):
</code></pre>
<p>下一部分将结合步骤3和4,使用字符串乘法和串联。对于空间,我们需要一个等于最大行数减去当前行数的数。对于散列符号,我们只需要当前行号。可以将字符串相乘以重复它,例如<code>'hi' * 2</code>表示<code>'hihi'</code>。最后,换行符作为python2<code>print</code>语句中的默认结束字符自动处理</p>
<pre><code> print ' ' * (num-i) + '#' * i
</code></pre>
<p>把它们放在一起,看起来是这样的:</p>
<pre><code>num = input()
for i in xrange(1, num+1):
print ' ' * (num-i) + '#' * i
</code></pre>
<p>正如您所发现的,使用复杂的计数器、嵌套循环、<code>list</code>操作和切片结构来实现相同的效果更难调试。当你让它正常工作时,问题也不会停止——这样的代码也很难维护,如果你想修改程序的话,这是一种痛苦。看看<a href="https://docs.python.org/2.7/tutorial/index.html" rel="nofollow">official Python tutorial</a>中一些清晰、简洁的Python代码的好例子</p>