gpt4 book ai didi

Python哨兵控制循环

转载 作者:行者123 更新时间:2023-12-01 05:08:33 25 4
gpt4 key购买 nike

我想知道是否有人可以帮助我指出正确的方向!我是一个初学者,我完全迷失了。我正在尝试创建一个 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))

最佳答案

您的代码运行良好,但存在一些逻辑问题。

您似乎计划同时处理多份支票。您可能需要为此使用一个列表,并向其附加支票和赞助人直到check-1(并且不要附加最后一组值!)。

我认为您遇到的真正问题是要离开循环,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。没关系,只是输入 "3.10" 将被截断为 3。可能不是您想要的。

Float 可能是一个解决方案,但也会带来其他问题。我建议在内部处理美分问题。您可能假设输入字符串的格式为 $(或 € 或其他)。要得到美分,只需乘以 100 ($3.00 == 300 美分)。然后在内部您可以继续使用 ints。

关于Python哨兵控制循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com