擅长:python、mysql、java
<p>这里需要纠正的三件事:</p>
<ol>
<li><p>正如DeepSpace所说,<code>$</code>取消了将字符串解释为浮点的资格,因此需要首先删除它。这里<code>.replace()</code>方法很有用</p>
</li>
<li><p>注意你的缩进!Python对此很挑剔。如果函数声明后没有缩进,Python将抛出一个错误。另外,循环<code>for</code>之后的返回语句应该与单词<code>for</code>处于相同的缩进<em>级别;现在它只返回第一次迭代后的数量,跳过其余的列表元素</p>
</li>
<li><p><code>for</code>循环中的条件应该包含<code>.</code>,以便将它们包含在要包含的浮点中,否则示例列表将返回<code>1265.0</code></p>
</li>
</ol>
<p>总之,以下是一个更正版本:</p>
<pre><code>def isnumber(string):
string_no_dollar = string.replace("$", "") # removes all $-signs
try:
float(string_no_dollar)
except:
return False
return True
def value_liste(liste):
# Code is indented after function declaration, as it must always be in Python.
amount = 0
if liste == []:
return 0.0
for string in liste:
if isnumber(string) == True and string[-1:] == '$':
# Include the "." in the conditional.
amount += float("".join(d for d in string if d.isdigit() or d == "."))
# The "return" statement should be indented outside the "for" loop.
return amount
</code></pre>