<p>你可以做循环,当你得到一个6你退出循环。如果没有输入,则跳过学生支票和账单计算。你知道吗</p>
<p>这比尝试使用标志变量检查是否应该打印要干净得多。你知道吗</p>
<p>使用<code>sys.exit</code>。终止你的程序真是太残忍了。通常最好将终止决定委托给应用程序中最外层的函数。最好让程序在到达程序末尾时自然终止。你知道吗</p>
<p>您可以使用<code>sys.exit</code>来处理诸如错误的命令行参数之类的问题。你知道吗</p>
<pre><code># example prices.
unitprices = {
1: 7.89, # DA_PRICE
2: 11.00, # BC_PRICE
3: 9.50,
4: 15.85,
5: 21.00
}
STAFF_TAX = 0.2
def calcbill(units, istaxable, unitprices=unitprices, taxrate=STAFF_TAX):
subtotal = 0
for u in units:
subtotal += unitprices[u]
if istaxable:
tax_amount = subtotal * (taxrate / 100)
else:
tax_amount = 0
return (subtotal + tax_amount, tax_amount)
entries = []
print("Enter kind of burger you want(1-5 or 6 to exit): ")
while True:
try:
choice = int(input("what is the next burger? "))
if choice == 6:
break
elif 0 < choice < 6:
entries.append(choice)
else:
print('invalid choice')
except:
print('not a number')
if entries:
while True:
s = input('Are you a student? ').lower()
if s in ('y', 'yes', 'true'):
isstudent = True
break
elif s in ('n', 'no', 'false'):
isstudent = False
break
else:
print('not a valid value')
total, tax = calcbill(entries, not isstudent)
print(f'the bill was ${total:.2f} which includes ${tax:.2f} tax')
</code></pre>