PA Programming Solution - 25 January 2020

PA Programming Solution - 25 January 2020



Q1. Make a function check_prime() that takes a number as argument. It returns 1 if the number is prime, 0 if it is composite and -1 otherwise.
Make another function composite_prime_list() that takes a list of numbers as input. It uses check_prime() and creates seperate lists of prime and composite numbers. It returns a third list containing both the above lists

 Solution:

def isprime(a):
    if a<=1:
        return -1
   else:
        for i in range(2,int(a/2)+1):
            if a%i==0:
                return 0
        return 1

def printlist(l):
    p=[]
    c=[]
    r=[]
    for i in l:
        if isprime(i)==1:
            p.append(i)
       elif isprime(i)==0:
            c.append(i)
    r.append(p)
    r.append(c)
    return r

if name=='_main_':
    l=[]
    for _ in range(int(input())):
        l.append(int(input()))
    print(isprime(l[1])
    print(printlist(l))






Q2. Make a Class Item having 4 attributes- item_id, item_name, item_price and quantity_available.
It has a Method calc_price() that takes a number 'quantity' is argument and checks if the provided quantity is greater than or equal to quantity_available attribute. If so, it returns the total price as (quantity * item_price). Otherwise, it returns 0.
Create another class Store that has one attribute item_list (list of Item objects).
It has a method generate_bill() that takes a dictionary having (item_name: quantity). It returns total price for the items in the dictionary if available in store. It uses calc_price() method of item class
Solution:

class Item:
  def __init__(self,a,b,c,d):
      self.iid=a
      self.name=b
      self.price=c
      self.quant=d
  def calc(self,n):
     if self.quant>=n:
       return self.price*n
     else:
       return 0

class Store:
  def __init__(self,l):
    self.list1=l
   
  def gen_bill(self,d):
    s=0
    for a,b in d.items():
      for i in range(len(self.list1)):
        if self.list1[i].name==a:
          s+= self.list1[i].calc(b)
    return s
   
if __name__=='__main__':
  l=[]
  c=int(input())
  for _ in range (c):
    i=Item(int(input()),input(),int(input()),int(input()))
    l.append(i)
  s=Store(l)
  d={}
  for _ in range(int(input())):
    n=input()
    q=int(input())
    d[n]=q
  print(l[0].calc(2))
  print(s.gen_bill(d))

Comments