Модульный: Программа расчета процентной скидки - PullRequest
0 голосов
/ 10 июля 2019

Создайте функцию с именем DeterminePrice, которая будет определять стоимость приобретаемого программного обеспечения. Стоимость программного обеспечения составляет $ 350 за лицензию. Однако при покупке в больших количествах предоставляется скидка. Для количеств менее 10 экземпляров скидка не предоставляется. Для количеств более 10 и менее включительно 20 предоставляется скидка 10%. Для количеств больше 20 и меньше включительно 30 предоставляется скидка 20%. Для количеств более 30 и менее 40 включительно предоставляется скидка 30%. Наконец, если кому-то нужно приобрести более 40 экземпляров, предоставляется скидка 40%.

Ваша функция должна учитывать количество покупок, которое пользователь желает приобрести. Необходимо вернуть обратно к main () предоставленную скидку и общую стоимость покупки программного обеспечения.

Вывод и тестирование MyProgramming Lab вызовет вашу функцию. Поэтому вы ДОЛЖНЫ убедиться, что вы называете свою функцию DeterminePrice (). В противном случае лаборатория 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 ]

1 голос
/ 10 июля 2019

Это потому, что 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()

В качестве примечания вы можете сделать оператор печати более привлекательным, используя форматирование строк.См. форматирование строки

Вывод:

Enter the number of copies : 55
Discount: $ 7700.0
Total: $ 11550.0
0 голосов
/ 10 июля 2019

Скидка не относится к той области, в которой вы ее называете.

Вы объявили скидку в своей функции DeterminePrice

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

Скидка не входит в сферу действия main, тольков функции DeterminePrice

Вы можете сделать ее глобальной переменной, которая делает ее доступной изнутри и вне области действия функции DeterminePrice

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