擅长:python、mysql、java
<p>您面临的主要问题是Python需要空白来限定方法的范围。否则,语句将无法按预期运行,例如:</p>
<pre><code>while True:
subtotal = float(input("Enter the total price of your purchases (or 'exit' to quit) :\$").strip())
if subtotal.lower()=='exit':
break
</code></pre>
<p>不会用有效的输入跳出循环(如果你把一个字符串放在那里,那就另当别论了)。另外,如果所有内容都在<code>main()</code>的范围内,那么每个语句都需要一个缩进级别(或者四行空格,如果您愿意的话)。现在,您的<code>while</code>不会在<code>main()</code>的范围内运行。在</p>
<p>另外,在实际给它一个值之前,先引用<code>subtotal</code>。由于<code>subtotal</code>没有正确初始化,您将没有用于它的值。在</p>
<p>您需要重写代码,使<code>tax</code>和{<cd7>}在您定义<code>subtotal</code>之后由<em>定义。在</p>
^{pr2}$
<p>最后,如果<code>subtotal</code>、<code>total</code>、和{<cd6>}被正确定义(在上面的后面,它们将被定义),那么当您希望打印出这些值时,就不需要使用superflous <code>try...except</code>语句。在</p>