我想知道是否有人可以帮我指出正确的方向!我是初学者,我完全迷失了。我正在尝试制作一个Sentinel控制的循环,要求用户“输入支票金额”然后询问“这次检查有多少顾客”。在它询问用户然后输入它直到他们键入-1。
一旦用户完成输入,则假设计算每张支票的总额,小费,税率,对于8位以下的任何人,18%的小费以及超过9的任何税率为20%,税率为8%。
然后它应该加上总计。 例如:支票1 = 100 $ 检查2 = 300 检查3 = 20 总支票= 420美元 我不是要求有人为我做这件事但是如果你能指出我正确的方向,这就是我到目前为止所有这一切并且我被卡住了。
截至目前,代码很糟糕,并没有真正起作用。 我在Raptor中完成了它并且它完美地工作了我只是不知道如何将它转换为python
sum1 = 0
sum2 = 0
sum3 = 0
sum4 = 0
sum5 = 0
check = 0
print ("Enter -1 when you are done")
check = int(input('Enter the amount of the check:'))
while check !=(-1):
patron = int(input('Enter the amount of patrons for this check.'))
check = int(input('Enter the amount of the check:'))
tip = 0
tax = 0
if patron <= 8:
tip = (check * .18)
elif patron >= 9:
tip = (check * .20)
total = check + tax + tip
sum1 = sum1 + check
sum2 = sum2 + tip
sum3 = sum3 + patron
sum4 = sum4 + tax
sum5 = sum5 + total
print ("Grand totals:")
print ("Total input check = $" + str(sum1))
print ("Total number of patrons = " + str(sum3))
print ("Total Tip = $" +str(sum2))
print ("Total Tax = $" +str(sum4))
print ("Total Bill = $" +str(sum5))
答案 0 :(得分:2)
你的代码运行正常,但是你有一些逻辑问题。
您似乎计划同时处理多项检查。您可能想要使用一个列表,并将支票和顾客附加到,直到 check
为-1
(并且不要&#39; t 附加最后一组值!)。
我认为您遇到的真正问题是离开循环,check
必须等于 -1
。
如果您再往后一点,那么继续使用check
,我们现在知道它是-1
,无论先前在循环中发生了什么(check
被覆盖每一次)。
当你到达这些界限时,你就会遇到一个真正的问题:
if patron <= 8:
tip = (check * .18)
elif patron >= 9:
tip = (check * .20)
# This is the same, we know check == -1
if patron <= 8:
tip = (-1 * .18)
elif patron >= 9:
tip = (-1 * .20)
此时你可能无法对你的程序做任何有趣的事情。
以下是我在谈到列表时所谈论的一个例子:
checks = []
while True:
patron = int(input('Enter the amount of patrons for this check.'))
check = int(input('Enter the amount of the check:'))
# here's our sentinal
if check == -1:
break
checks.append((patron, check))
print(checks)
# do something interesting with checks...
现在您将输入解析为int&#39; s。没问题,但"3.10"
的输入将被截断为3
。可能不是你想要的。
Float可能是一个解决方案,但可能带来其他问题。我建议在内部处理美分。您可能认为输入字符串是$(或€或者其他)。获得美分,只需乘以100($3.00 == 300¢
)。然后在内部,您可以继续使用int
s。
答案 1 :(得分:0)
这个程序应该让你入门。如果您需要帮助,请务必使用答案下方的评论。
def main():
amounts, patrons = [], []
print('Enter a negative number when you are done.')
while True:
amount = get_int('Enter the amount of the check: ')
if amount < 0:
break
amounts.append(amount)
patrons.append(get_int('Enter the number of patrons: '))
tips, taxs = [], []
for count, (amount, patron) in enumerate(zip(amounts, patrons), 1):
tips.append(amount * (.20 if patron > 8 else .18))
taxs.append(amount * .08)
print('Event', count)
print('=' * 40)
print(' Amount:', amount)
print(' Patron:', patron)
print(' Tip: ', tips[-1])
print(' Tax: ', taxs[-1])
print()
print('Grand Totals:')
print(' Total amount:', sum(amounts))
print(' Total patron:', sum(patrons))
print(' Total tip: ', sum(tips))
print(' Total tax: ', sum(taxs))
print(' Total bill: ', sum(amounts + tips + taxs))
def get_int(prompt):
while True:
try:
return int(input(prompt))
except (ValueError, EOFError):
print('Please enter a number.')
if __name__ == '__main__':
main()