<p>这其中有几个明显的错误:</p>
<ol>
<li><p>每次for循环运行后都不会保存num。因为调用<code>getDigitSum(num)</code>时没有参数,所以应该有一个错误。即使它确实可以工作(也就是说,您将<code>getDigitSum()</code>更改为<code>getDigitSum(num)</code>),它仍然无法工作,因为num在每次运行后都不会被保留。<strong>TL:DR;</strong>将main中的<code>getDigitSum()</code>行更改为<code>num = getDigitSum(num)</code>。</p></li>
<li><p>在这段代码中你没有输出任何东西。程序结束后,不会打印总和。因此,在更改行<code>getDigitSum()</code>之后,还应该在for循环后面的<code>print(sum)</code>中包含<code>main()</code>。</p></li>
</ol>
<p>因此,您的代码如下所示:</p>
<pre><code>num = 0
def main():
name = input('Please enter your name: ')
for letter in name:
if letter == 'a' or letter == 'j' or letter == 's':
num = num + 1
if letter == 'b' or letter == 'k' or letter == 't':
num = num + 2
if letter == 'c' or letter == 'l' or letter == 'u':
num = num + 3
if letter == 'd' or letter == 'm' or letter == 'v':
num = num + 4
if letter == 'e' or letter == 'n' or letter == 'w':
num = num + 5
if letter == 'f' or letter == 'o' or letter == 'x':
num = num + 6
if letter == 'g' or letter == 'p' or letter == 'y':
num = num + 7
if letter == 'h' or letter == 'q' or letter == 'z':
num = num + 8
if letter == 'i' or letter == 'r':
num = num + 9
num = getDigitSum(num)
print(num)
def getDigitSum(num):
sum = 0
while num > 0:
num, remainder = divmod(num, 10)
sum += remainder
return sum
main()
</code></pre>
<p>在提问之前,请先阅读StackOverflow的<a href="https://stackoverflow.com/help/how-to-ask">Asking Guidelines</a>。你知道吗</p>