<p>我试着运行代码,当我以<code>print(stringadd("32134","23456782"))</code>的形式发送输入时,我确实得到了正确的答案,但是当我将其更改为<code>print(stringadd("23456782", "32134"))</code>时,我遇到了错误。这是因为您正在使用<code>m</code>和<code>n</code>进行循环,但在某些情况下(当<code>len(s1)>len(s2)</code>)您正在交换<code>s1</code>和<code>s2</code></p>
<p>您应该在交换之后取<code>s1</code>和<code>s2</code>的值。这将修复代码。请在下面找到正确的代码</p>
<pre><code>def stringadd(s1,s2):
s1=s1[::-1]
s2=s2[::-1]
carry=0
s=""
if len(s1)>len(s2):
temp=s2
s2=s1
s1=temp
# Value of m and n taken after interchaning
m=len(s1)
n=len(s2)
for i in range(m):
sum=(ord(s1[i])-48)+(ord(s2[i])-48) +carry
s+=chr(sum%10 +48)
carry=int(sum/10)
for i in range(m,n):
sum=(ord(s2[i])-48)+carry
s+=chr(sum%10 +48)
carry=int(sum/10)
if(carry):
s+=chr(carry+48)
s=s[::-1]
return s
print(stringadd("23456782", "32134"))
</code></pre>
<p>您还可以改变以下几个方面:</p>
<ol>
<li>不要使用<code>sum</code>作为变量,因为它是保留关键字</李>
<li>从代码中删除<code>i += 1</code>,因为它在forloop中没有任何作用</李>
</ol>
<p>希望这能回答你的问题</p>