模块化:程序计算折扣百分比

时间:2019-07-10 15:31:50

标签: python python-3.x main percentage

创建一个名为确定价格的函数,该函数将确定所购买软件的成本。该软件的价格是每个许可证350美元。但是,当大量购买时,会得到折扣。如果数量少于10份,则没有折扣。对于数量大于10且小于等于20的数量,将给予10%的折扣。对于数量大于20且小于等于30的数量,给出20%的折扣。对于数量大于30且小于等于40的数量,提供30%的折扣。最后,如果某人需要购买40多个副本,则可以享受40%的折扣。

您的功能需要考虑用户希望购买的数量。它需要返回给main()折扣和购买软件的总成本。

输出和测试 MyProgramming Lab将调用您的函数。因此,您必须确保将函数的名称命名为ChoicePrice()。否则,MyProgramming实验室将无法找到您的功能。另外,在编写函数时,请确保它首先返回折扣,然后返回合计。否则,您的折扣和总额将无法正确打印。

运行函数时,第一个测试的输出将如下所示:

Enter the number of copies:  35
Discount:  $ 105.00
Total:     $ 8,575.00

def DeterminePrice(numberOfCopies): 
  discount=0 
  price=numberOfCopies*350 
  if (numberOfCopies <= 10):
    discount=0
  elif(numberOfCopies>10 and numberOfCopies <= 20):
    discount=price*10/100
  elif(numberOfCopies>20 and numberOfCopies <= 30):
    discount=price*20/100
  elif(numberOfCopies>30 and numberOfCopies <= 40):
    discount=price*30/100
  elif(numberOfCopies>40):
    discount=price*40/100
    totalPrice=price-discount
  return discount,totalPrice

def main():  
  copies=int(input("Enter the number of copies : "))
  discount,price=DeterminePrice(copies)
print("Discount: $",discount) 
print("Total: $",price)

我的错误是说折扣未定义,但我认为它是在def(DeterminePrice)下

2 个答案:

答案 0 :(得分:1)

这是因为discount是主函数的局部变量。

如果您缩进打印线,并使其成为主要打印线,则可以纠正该错误。

#!/usr/bin/env python3

def DeterminePrice(numberOfCopies):
  discount=0
  price=numberOfCopies*350
  if (numberOfCopies <= 10):
    discount=0
  elif(numberOfCopies>10 and numberOfCopies <= 20):
    discount=price*10/100
  elif(numberOfCopies>20 and numberOfCopies <= 30):
    discount=price*20/100
  elif(numberOfCopies>30 and numberOfCopies <= 40):
    discount=price*30/100
  elif(numberOfCopies>40):
    discount=price*40/100
    totalPrice=price-discount
  return discount,totalPrice

def main():
  copies=int(input("Enter the number of copies : "))
  discount,price=DeterminePrice(copies)
  print("Discount: ${}".format(discount)) #Added print formatting statement
  print("Total: ${}".format(price)) 

if __name__ == "__main__":
  main()

作为旁注,您可以使用字符串格式来使外观更好看。参见string formatting

输出:

Enter the number of copies : 55
Discount: $ 7700.0
Total: $ 11550.0

答案 1 :(得分:-1)

折扣与您所称呼的范围不在同一范围内。

您在确定价格函数中声明了折扣

  def DeterminePrice(numberOfCopies): 
       discount=0 #<-HERE!
       price=numberOfCopies*350 

折扣不在主要范围内,仅在确定价格功能内

您可以将其设置为全局变量,从而可以从DefinePrice函数范围的内部和外部对其进行访问

def DeterminePrice(numberOfCopies): 
    global discount
    discount=0 
    price=numberOfCopies*350