擅长:python、mysql、java
<p>你很亲密。你需要改变的是:</p>
<pre><code>Sum=sum(ListOfDigits)
while(Sum>9):
Sum=sum(ListOfDigits)
if (Sum>9):
ListOfDigits=list(map(int,str(Sum)))
Sum=sum(ListOfDigits)
</code></pre>
<p>在这段代码中,有一个while循环,它在<code>sum</code>大于9时执行。那么为什么要使用另一个变量<code>Sum</code>(而且,这会使代码非常难以阅读)?请执行以下操作:</p>
^{pr2}$
<p>这只是为了告诉你你的代码出了什么问题。我不建议使用它(看看下面我会怎么做)。首先,您混合了变量命名约定,这是一个非常糟糕的主意,尤其是当您在团队中工作时(即使不是这样,您能想象一个月或六个月后查看您的代码吗?)。<br/>
第二,你从来没有使用过<code>goodvalue2</code>;它有什么用?<br/>
第三,如果<code>goodvalue1</code>只会是<code>bool</code>,那么为什么要检查{<cd6>}?<code>if goodvalue1</code>更清晰,更具Python味。<br/>
为了所有的好处,请在代码中使用一些空格。在看了一段时间像<code>ListOfDigits=list(map(int,str(num)))</code>这样的表情后,眼睛会变得非常紧张。请改为尝试<code>ListOfDigits = list(map(int, str(num)))</code>。在</p>
<p>就我个人而言,我会这样做:</p>
<pre><code>num = None
while num is None:
try:
num = int(raw_input("Enter a number: "))
except ValueError:
num = None
num = sum(int(i) for i in str(num))
while num > 9:
num = sum(int(i) for i in str(num)) # this uses a list comprehension. Look it up, they're very useful and powerful!
</code></pre>