Python 使用 IF 语句的运费计算器

Python Shipping Calculator Using IF Statements

我正在尝试使用 IF 语句在 python 中制作运费计算器。 应用程序应计算订单的总成本,包括运费。我被困在 python 根本不会 运行 我的代码的地步。我有一种感觉,我很接近,但我不知道我输入的内容有什么问题,因为 python 不会 return 任何错误。请有人指引我正确的方向。

说明:

创建一个程序来计算包括运费在内的订单总成本。

当你的程序是运行时,它应该...

  1. 打印程序“运费计算器”的名称
  2. 提示用户输入订购商品的成本
  3. 如果用户输入的数字小于零,则显示一条错误消息并让用户有机会再次输入该数字。 (注意:如果你知道 loops/iterations,可以在这里使用,但如果不知道,只需使用 if 语句进行一次简单的一次性检查就可以了。) 例如:如果成本小于零,则打印一条错误消息,然后重新询问一次输入。

使用以下 table 计算运费: |物品成本 |运费 | | -------------- | -------------- | | <30 | 5.95 | | 30.00-49.99 | 7.95 | | 50.00-74.99 | 9.95 | | >75.00 |免费 |

  1. 打印运送物品的运费和总费用
  2. 使用您选择的退出问候语结束程序(例如,感谢您使用我们的运费计算器!)

示例 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个错误:

  1. 你忘了调用主函数
  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()
  1. 正如@Devang Sanghani 提到的,你应该在你的函数之外调用你的 main() 这样它就会 运行

  2. 对于您的 calc_subtotal() 函数,使用 while 循环不断接收用户输入,直到给出有效数字。确保将 return subtotal 移出此循环,以便它只会 return 一旦此数字有效。

  3. 在您的 calc_shipping() 函数中,确保将 subtotal 作为参数接收,因为您在函数中使用它。确保你也 return shipping.

  4. 同样,在您的 calc_total() 函数中,将 subtotalshipping 作为参数,因为它们在您的函数中使用。

  5. 鉴于这些变化,请相应地更新您的 main() 功能。

我希望这些更改有意义!如果您需要任何进一步的帮助或说明,请告诉我:)

除了上面的答案,还要考虑价格可以是几美分的情况,所以这一行应该改变:

if subtotal >= 0 and subtotal <= 29.99: # changed from 1 to 0