Python 使用 IF 语句的运费计算器
Python Shipping Calculator Using IF Statements
我正在尝试使用 IF 语句在 python 中制作运费计算器。
应用程序应计算订单的总成本,包括运费。我被困在 python 根本不会 运行 我的代码的地步。我有一种感觉,我很接近,但我不知道我输入的内容有什么问题,因为 python 不会 return 任何错误。请有人指引我正确的方向。
说明:
创建一个程序来计算包括运费在内的订单总成本。
当你的程序是运行时,它应该...
- 打印程序“运费计算器”的名称
- 提示用户输入订购商品的成本
- 如果用户输入的数字小于零,则显示一条错误消息并让用户有机会再次输入该数字。
(注意:如果你知道 loops/iterations,可以在这里使用,但如果不知道,只需使用 if 语句进行一次简单的一次性检查就可以了。)
例如:如果成本小于零,则打印一条错误消息,然后重新询问一次输入。
使用以下 table 计算运费:
|物品成本 |运费 |
| -------------- | -------------- |
| <30 | 5.95 |
| 30.00-49.99 | 7.95 |
| 50.00-74.99 | 9.95 |
| >75.00 |免费 |
- 打印运送物品的运费和总费用
- 使用您选择的退出问候语结束程序(例如,感谢您使用我们的运费计算器!)
示例 1:
=================
运费计算器
订购商品的成本:49.99
运费:7.95
总费用:57.94
感谢您使用我们的运费计算器!
示例 2:
=================
运费计算器
订购商品的成本:-65.50
您必须输入一个正数。请重试。
订购商品的成本:65.50
运费:9.95
总费用:75.45
感谢您使用我们的运费计算器!
这是我到目前为止写出的代码:
#Assignment shipping calculator
#Author: Name
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping()
total = calc_total()
main()
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
if subtotal <= 0:
print("You must enter a positive number. Please try again.")
return subtotal
def calc_shipping():
subtotal = calc_subtotal()
shipping = calc_shipping
if subtotal >= 1 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
def calc_total():
total = calc_subtotal() + calc_shipping()
print("Total Cost: ",total)
print("Thank you for using our shipping calculator!")
所以好像有2个错误:
- 你忘了调用主函数
- 您在
calc_subtotal()
中缩进了 return 语句,因此它 return 只有在 subtotal <= 0
正确的代码可能是:
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping()
total = calc_total()
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
if subtotal <= 0:
print("You must enter a positive number. Please try again.")
calc_subtotal() # Re asking for the input in case of invalid input
else:
return subtotal # returning subtotal in case of valid input
def calc_shipping():
subtotal = calc_subtotal()
shipping = calc_shipping
if subtotal >= 0 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
def calc_total():
total = calc_subtotal() + calc_shipping()
print("Total Cost: ",total)
print("Thank you for using our shipping calculator!")
main() # Calling main
首先,我将把代码放在这里然后解释我所做的所有更改(您最初的尝试非常接近,只是一些调整):
#Assignment shipping calculator
#Author: Name
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping(subtotal)
calc_total(subtotal,shipping)
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
while subtotal <= 0:
print("You must enter a positive number. Please try again.")
subtotal = float(input("Cost of Items Ordered: $"))
return subtotal
def calc_shipping(subtotal):
if subtotal >= 1 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
return shipping
def calc_total(subtotal,shipping):
total = subtotal + shipping
print("Total Cost: $" + str(round(total,2)))
print("Thank you for using our shipping calculator!")
main()
正如@Devang Sanghani 提到的,你应该在你的函数之外调用你的 main()
这样它就会 运行
对于您的 calc_subtotal()
函数,使用 while 循环不断接收用户输入,直到给出有效数字。确保将 return subtotal
移出此循环,以便它只会 return 一旦此数字有效。
在您的 calc_shipping()
函数中,确保将 subtotal
作为参数接收,因为您在函数中使用它。确保你也 return shipping
.
同样,在您的 calc_total()
函数中,将 subtotal
和 shipping
作为参数,因为它们在您的函数中使用。
鉴于这些变化,请相应地更新您的 main()
功能。
我希望这些更改有意义!如果您需要任何进一步的帮助或说明,请告诉我:)
除了上面的答案,还要考虑价格可以是几美分的情况,所以这一行应该改变:
if subtotal >= 0 and subtotal <= 29.99: # changed from 1 to 0
我正在尝试使用 IF 语句在 python 中制作运费计算器。 应用程序应计算订单的总成本,包括运费。我被困在 python 根本不会 运行 我的代码的地步。我有一种感觉,我很接近,但我不知道我输入的内容有什么问题,因为 python 不会 return 任何错误。请有人指引我正确的方向。
说明:
创建一个程序来计算包括运费在内的订单总成本。
当你的程序是运行时,它应该...
- 打印程序“运费计算器”的名称
- 提示用户输入订购商品的成本
- 如果用户输入的数字小于零,则显示一条错误消息并让用户有机会再次输入该数字。 (注意:如果你知道 loops/iterations,可以在这里使用,但如果不知道,只需使用 if 语句进行一次简单的一次性检查就可以了。) 例如:如果成本小于零,则打印一条错误消息,然后重新询问一次输入。
使用以下 table 计算运费: |物品成本 |运费 | | -------------- | -------------- | | <30 | 5.95 | | 30.00-49.99 | 7.95 | | 50.00-74.99 | 9.95 | | >75.00 |免费 |
- 打印运送物品的运费和总费用
- 使用您选择的退出问候语结束程序(例如,感谢您使用我们的运费计算器!)
示例 1:
================= 运费计算器
订购商品的成本:49.99
运费:7.95
总费用:57.94
感谢您使用我们的运费计算器!
示例 2:
================= 运费计算器
订购商品的成本:-65.50
您必须输入一个正数。请重试。
订购商品的成本:65.50
运费:9.95
总费用:75.45
感谢您使用我们的运费计算器!
这是我到目前为止写出的代码:
#Assignment shipping calculator
#Author: Name
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping()
total = calc_total()
main()
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
if subtotal <= 0:
print("You must enter a positive number. Please try again.")
return subtotal
def calc_shipping():
subtotal = calc_subtotal()
shipping = calc_shipping
if subtotal >= 1 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
def calc_total():
total = calc_subtotal() + calc_shipping()
print("Total Cost: ",total)
print("Thank you for using our shipping calculator!")
所以好像有2个错误:
- 你忘了调用主函数
- 您在
calc_subtotal()
中缩进了 return 语句,因此它 return 只有在subtotal <= 0
正确的代码可能是:
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping()
total = calc_total()
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
if subtotal <= 0:
print("You must enter a positive number. Please try again.")
calc_subtotal() # Re asking for the input in case of invalid input
else:
return subtotal # returning subtotal in case of valid input
def calc_shipping():
subtotal = calc_subtotal()
shipping = calc_shipping
if subtotal >= 0 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
def calc_total():
total = calc_subtotal() + calc_shipping()
print("Total Cost: ",total)
print("Thank you for using our shipping calculator!")
main() # Calling main
首先,我将把代码放在这里然后解释我所做的所有更改(您最初的尝试非常接近,只是一些调整):
#Assignment shipping calculator
#Author: Name
def main():
print("Shipping Calculator")
subtotal = calc_subtotal()
shipping = calc_shipping(subtotal)
calc_total(subtotal,shipping)
def calc_subtotal():
subtotal = float(input("Cost of Items Ordered: $"))
while subtotal <= 0:
print("You must enter a positive number. Please try again.")
subtotal = float(input("Cost of Items Ordered: $"))
return subtotal
def calc_shipping(subtotal):
if subtotal >= 1 and subtotal <= 29.99:
shipping = 5.95
print("Shipping Cost: .95")
if subtotal >= 30 and subtotal <= 49.99:
shipping = 7.95
print("Shipping Cost: .95")
if subtotal >= 50 and subtotal <= 74.99:
shipping = 9.95
print("Shipping Cost: .95")
if subtotal >= 75:
shipping = 0
print("Shipping Cost: Free")
return shipping
def calc_total(subtotal,shipping):
total = subtotal + shipping
print("Total Cost: $" + str(round(total,2)))
print("Thank you for using our shipping calculator!")
main()
正如@Devang Sanghani 提到的,你应该在你的函数之外调用你的
main()
这样它就会 运行对于您的
calc_subtotal()
函数,使用 while 循环不断接收用户输入,直到给出有效数字。确保将return subtotal
移出此循环,以便它只会 return 一旦此数字有效。在您的
calc_shipping()
函数中,确保将subtotal
作为参数接收,因为您在函数中使用它。确保你也 returnshipping
.同样,在您的
calc_total()
函数中,将subtotal
和shipping
作为参数,因为它们在您的函数中使用。鉴于这些变化,请相应地更新您的
main()
功能。
我希望这些更改有意义!如果您需要任何进一步的帮助或说明,请告诉我:)
除了上面的答案,还要考虑价格可以是几美分的情况,所以这一行应该改变:
if subtotal >= 0 and subtotal <= 29.99: # changed from 1 to 0