<p>首先有几件事不对。我会解释每件事。
以下是您的完整工作代码:</p>
<pre><code>def receipt(array):
total = 0.0
for i in array:
total = total + i
return total
array = []
while True:
print("Calculating Price")
n = input("Enter a price: ")
if n=="":
print("Goodbye")
break
array.append(float(n))
totalCost = receipt(array)
print("The total cost is " + str(totalCost))
</code></pre>
<h2>你的错误:</h2>
<p>1)<code>array.append(n)</code>-第一个。对于初学者来说很常见。在</p>
<p>python中的<code>input()</code>以字符串形式获取用户输入。所以你的<code>n</code>是一个<strong>字符串</strong>。在</p>
<p>请看所有语言中都有<a href="https://en.wikibooks.org/wiki/Python_Programming/Data_Types" rel="nofollow noreferrer">data types</a>。Python是一种强类型语言,而perl不是强类型语言。如何判断语言是强类型还是弱类型?简单。在你的翻译里试试这个。在</p>
^{pr2}$
<p>看到错误了现在试试这个</p>
<pre><code>>>> a=5
>>> b='9'
>>> a+int(b)
14
</code></pre>
<p>工作得很好。Python不允许只使用<code>a+b</code>,而有些语言则支持example<em>perl</em>。多读一读。所以你不能添加它们你必须<strong>类型转换</strong>。所以把它换成</p>
<pre><code>array.append(int(n))
</code></pre>
<p>或者</p>
<pre><code>array.append(float(n))
</code></pre>
<p>如果要使用浮点值。在</p>
<p>2)<code>totalCost = receipt(n)</code>请看您正在将<code>n</code>传递给函数。但是你的函数定义有<code>def receipt(array):</code>。这里实际发生的是</p>
<pre><code>receipt(n) ----> (calls) ---->def receipt(array):
</code></pre>
<p>其中<code>n ------> array</code>所以你的<code>array</code>就是<code>n</code>。你应该做的是</p>
<pre><code>totalCost = receipt(array)
</code></pre>
<p>3)<code>sum = 0.0</code><strong>NEVER</strong>我说过不要使用内置或关键字名称(例如:sum、min、max、int、str等)作为变量名。阅读有关在<a href="https://www.python.org/dev/peps/pep-0008/" rel="nofollow noreferrer">PEP 8</a>中命名的详细信息</p>
<p>所以也许可以将<code>sum</code>重命名为<code>sum_</code>(这是要遵循的惯例),但是为什么不能将<code>sum</code>重命名为<code>total</code>简单得多?在</p>
<p>4)和<strong>最后</strong></p>
<pre><code>for i in range(len(array)):
sum = sum + array[i]
</code></pre>
<p>为什么<code>range(len(array))</code>当你可以简单地做<code>for i in array:</code></p>
<p>无法理解请看这个例子:</p>
<pre><code>>>> a = [1,2,3]
>>> for i in a:
print(i)
1
2
3
</code></pre>
<p>See <code>for item in something</code>只需要从一组东西(iterable(list、tuple、set等)中获取<strong>每个条目</strong></p>
<p>把这些线改成</p>
<pre><code> for i in array:
total = total + i
</code></pre>
<p>你得到了你想要的</p>
<p>输出:</p>
<pre><code>Calculating Price
Enter a price: 10
The total cost is 10.0
Calculating Price
Enter a price: 20
The total cost is 30.0
Calculating Price
Enter a price: 15
The total cost is 45.0
Calculating Price
Enter a price:
Goodbye
</code></pre>
<p><strong>更新:</strong></p>
<p>正如评论中提到的,你需要了解更多关于<strong>缩进的信息。查看评论中的链接。在</p>