<p>这里有几件事:</p>
<ol>
<li>printline函数可以工作,但会使问题过于复杂</李>
</ol>
<p>在其他编程语言中,为了将同一字符串重复多次,通常会创建以下形式的循环:</p>
<pre><code>String s = "";
for(int i = 0; i < num; i++)
s += sym;
return s;
</code></pre>
<p>由于这相当于将相同的字符串<code>num</code>连接几次,因此在python中有一种更简单的方法:</p>
<pre><code>s = sym*num
</code></pre>
<p>您的解决方案之所以有效,是因为在返回变量<code>a</code>之前,您正在覆盖变量中的值<code>num</code>次</p>
<ol start=“2”>
<li>您误解了您的测试用例</李>
</ol>
<p>你说<code>printrectangle(3, 4, '*')</code>应该用4个符号打印3行。但是正如您所写的,第一个变量<code>num=3</code>,第二个变量<code>height=4</code>。
这里的输出实际上是:</p>
<pre><code>***
***
***
***
</code></pre>
<p>您的代码目前还没有做到这一点,但我们不要走在前面</p>
<ol start=“3”>
<li>压痕误差</li>
</ol>
<p><code>printrectangle</code>函数中的return语句位于循环内。这意味着在循环的第一次迭代期间,函数将返回一个值。
轻松修复,只需退格,直到返回的缩进与循环的缩进对齐</p>
<ol start=“4”>
<li>实际解决问题</李>
</ol>
<p>从第1部分开始,我在这里介绍了在python中,要多次连接同一个字符串,只需将该字符串乘以希望它显示的次数即可</p>
<p>在这里,我们希望字符串<code>printline(num, sym)</code>在每次之后都显示<code>height</code>次,并使用enter键</p>
<p>回车键发送<code>\n</code>命令。换句话说,诸如<code>'a\nb'</code>之类的字符串被打印为:</p>
<pre><code>a
b
</code></pre>
<p>出于我们的目的,我们可以先将字符串<code>printline(num, sym)</code>与<code>\n</code>连接起来,然后将结果字符串乘以<code>height</code>得到<code>printrectangle(num, height, sym)</code>的结果</p>
<pre><code>def printrectangle(num, height, sym):
a = (printline(num, sym)+'\n')*height
return a
</code></pre>