Mini Project Python Data Structures Sprint1 Fresco Play Hands-on Solution Hacker Rank

Python data structure Mini project hands-on covers various topics of Python Objects, Data Structures Functions and Methods, Hierarchical Inheritance.
Mini Project Python Data Structures Sprint1 Fresco Play Hands-on Solution Hacker Rank - www.pdfcup.com

Mini-Project - Python FSP - Sprint1 Case Study - Data Structures

Welcome to Python Data Structures

Question 1: Basics of Python

Solution 1:


# Enter your code here. Read input from STDIN. Print output to STDOUT
import ast

def numbers(num1,num2,num3,num4):
    
    num_list=[num1,num2,num3,num4]
    '''
    Find the sum of all the numbers and store it in variable sum_of_numbers
    '''


    def sum_of_number(input_list):
        count =0
        for i in input_list:
            count +=i
        return count
    
    sum_of_numbers = sum_of_number(num_list)
    
    
    '''
    Find the sum of float numbers among the numbers and store it in variable sum_of_float_numbers
    '''
    y= [i for i in num_list if isinstance(i, float)]
    
    sum_of_float_numbers = sum_of_number(y)
    
    
    '''
    Find the smallest integer number among the numbers and store it in variable min_number
    '''
    def filter_list_int(mix_list):
        int_list= []
        for items  in mix_list:
            if isinstance(items , int):
                int_list.append(items)
        return int_list  
      
    def find_small_num(a):
        smallest_int= []
        for i in a:
            if len(smallest_int)<=0 :
                smallest_int.append(i)
            else:
                if i<smallest_int[0] and type(i)!=float:
                    smallest_int.pop()
                    smallest_int.append(i)
        return smallest_int[0] 
    
    

    min_number = find_small_num( filter_list_int(num_list))
    
    '''
    Find the count of prime numbers among the numbers and store it in variable prime_count
    '''
    def prime(item_list):
        prime_list=[]
        for item in item_list:
            is_prime = True
            for index_item in range(2,int(item)):
                if item % index_item==0:
                    is_prime=False
            if is_prime and type(item)!= float and item>1:
                prime_list.append(item)
        return len(prime_list)            


    prime_count = prime(num_list)
    
    '''
    Check for zeros. If there are zeros present among the numbers, store True else store False in the variable zero_check
    '''
    def find_zeros(input_list):
        zeros=0 in input_list 
        return zeros
    
    zero_check= find_zeros(num_list)

 

    print(sum_of_numbers)
    print(sum_of_float_numbers)
    print(min_number)
    print(prime_count)
    print(zero_check)
    
    # Refer '__main__' method code which is given below if required.
    
if __name__ == '__main__':
   

# Starting from here:  
if __name__=='__main__':
    num1 = ast.literal_eval(input())
    num2 = ast.literal_eval(input())
    num3 = ast.literal_eval(input())
    num4 = ast.literal_eval(input())
    numbers(num1,num2,num3,num4)
  

Question 2: Objects and Data Structures.

Solution 2:


# Enter your code here. Read input from STDIN. Print output to STDOUT

def data_oper(string1,string2):
    '''
    Split the string string1 with whitespace as delimiter
    Remove the words that contain characters that are not alphabets
    Remove the words whose length is less than 3
    Convert first letter of each word in to Upper case
    Store it in variable list1
    Type of list1 - List
    '''
    def split_string(string):            
        string_list = string.strip().split()
        string_list_cap = [ words.capitalize()  for words in string_list if words.isalpha() and len(words)>2]
        return string_list_cap

    list1= split_string(string1)
    
    '''
    Split the string string2 with whitespace as delimiter
    Remove the words that contain characters that are not alphabets
    Remove the words whose length is less than 3
    Convert first letter of each word in to Upper case
    Store it in variable list2
    Type of list2 - List
    '''

    list2= split_string(string2)
  

    
    '''
    Concatinate the lists list1,list2 and store it in variable list3
    Type of list3 - List
    '''
    list3 =  [*list1, *list2]
    
    # list3= [single_list_item for x in [list1, list2] for single_list_item in x]    # it will also work
    # list3 = list1+list2     # it will also work
    
    list4= list3.copy()
    list4.sort()

    
    
    '''
    Find the count of each word in the list list3 and store it in variable count_dictionary
    Type of count_dictionary - Dictionary
    Keys have to be words
    Dictionary must be ordered based on Keys
    '''
    
    count_dictionary = { key:list4.count(key)  for key in list4 }

    
    '''
    Find the unique words from words of list3 and store it in variable list3_uni
    Type of list3_uni - list
    list3_uni must be sorted in ascending order
    '''
    list4_copy = list4.copy()
    list3_uni = list(set(list4_copy))
    list3_uni.sort()
    
    '''
    Find the common words in list1,list2 and store it in variable common_tuple
    Type of common_tuple - tuple
    Words have to unique and sorted in ascending order
    If there are no common words in list1,list2 store an empty tuple
    '''
    unique_list1 = set(list1)
    unique_list2 = set(list2)
    fun = lambda x:x in unique_list2
    common_words = tuple(filter(fun, unique_list1))
    common_tuple= tuple(sorted(common_words))


    
    '''
    Find the words of list3 that ends with 's' and store it in variable ends_with
    Type of ends_with - tuple
    Words have to be unique and sorted in ascending order
    If there are no words in list3 that ends with 's', store an empty tuple
    '''

    s = [ i  for i in list4 if i.endswith("s")]
    s = list(set(s))
    ends_with = tuple(sorted(s))
 
    print(list3)
    print(count_dictionary)
    print(list3_uni)
    print(common_tuple)
    print(ends_with)
    
    # Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:  
if __name__=='__main__':
    string1 = input()
    string2 = input()
    data_oper(string1,string2)

Question 3: Functions and Methods.

Solution 3:

import ast

# Enter your code here. Read input from STDIN. Print output to STDOUT
'''
Write the function list_oper that takes two list as input.

Function should return a string after performing the operations specified below
 - Check for the squares and cubes of elements in list1 is present in list2
 - Return  if squares and cubes of all elements in list1 are present in list2.
 - Return "Squares are only present" if squares of all elements in list1 are only present in list2.
 - Return "Cubes are only present" if cubes of all the elements in list1 are only present in list2.
 - Return "No such pattern is present" if there are squares and cubes of any element in list1 is not present in list2
'''

def list_oper( num_list, sqr_cub_list):
    # l2 = list(set(l2))
    squ= True
    cub= True
    for i in num_list:
        if squ:
            if i**2 not in sqr_cub_list :
                squ= False
            
        if cub:
            if  i**3 not in sqr_cub_list:
                cub = False

    if squ and cub:
        return "Squares and Cubes are present"
    if squ:
        return "Squares are only present"
    if cub:
        return "Cubes are only present"
    if not squ and not cub: 
        return "No such pattern is present"
      
'''
Write the function amstrong which takes two numbers(num1,num2) as input. Function should return the list of amstrong numbers between num1 and num2

Example : [0,1,..]
'''
def amstrong(num1 , num2):
    amstrong_num = []
    for num in range(num1 , num2+1):    
      num_len = len(str(num))
      str_num_list= list(str(num))

      int_num_list = list(map( lambda x: int(x), str_num_list)) 
      q=[]
      for j in int_num_list :
        q.append(j ** num_len)
      if sum(q) == num:
        amstrong_num.append(num)
    return amstrong_num 




'''
Write the function string_oper which takes a string as input and return another string after removing words that have characters repeated

Input : "This is an example"
Output : "This is an"
'''
def string_oper(string):
    string_list= string.split()
    unique_char = []
    for word  in string_list:
        for character in  word :
                if character in unique_char:
                    string = string.replace(word, '').replace("  "," ")
                    break
                else:
                    unique_char.append(character)  
        unique_char.clear()
    return string.strip()
    # Alternative Solution
    # Comment line from 66 to 76
    # Uncomment only line 80, it will also work.  
    # return " ".join(word for word in ss.split() if len(set(word)) == len(word))

    

'''
Write a function string_reverse which takes a string as input and return another string with each word in reversed order.

Example : "START OF THE PROJECT"
Output :  "TRATS FO EHT TCEJORP"
'''
def string_reverse(string):
    string_list = string.split()
    rev_str = ""
    for word in string_list:
        rev_str+= "".join(word[::-1]+" ")
    return rev_str
    # Alternative Solution
    # Comment line 95 to 101 
    # Uncomment only line 105, it will also work.
    # return  " ".join("".join(list(reversed(ss))).split()[::-1])
    
    # Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:  
if __name__=='__main__':
    list1 = ast.literal_eval(input())
    list2 = ast.literal_eval(input())
    num1 = ast.literal_eval(input())
    num2 = ast.literal_eval(input())
    string1 = input()
    string2 = input()
    print(list_oper(list1,list2))
    print(amstrong(num1,num2))
    print(string_oper(string1))
    print(string_reverse(string2))

Question 4: Hierarchical inheritance.

Solution 4:


import ast

# Enter your code here. Read input from STDIN. Print output to STDOUT
'''
Create class Person
Initialize the class with first_name,last_name
Create a member function "Name" that returns the Full name of the person
Type of first_name - str
Type of last_name - str
'''
class Person:
    def __init__(self, first_name, last_name):
        self.first_name= first_name
        self.last_name = last_name
    
    def Name(self):
        return ' '.join([self.first_name, self.last_name])
    
     
    
'''
Create another class Student that inherits the proporties of class Person
Initialize the class variable "count" with value 0
Initialize the class with fist_name,last_name,rollno,mark1,mark2
class variable count should have the number of students
Create a member function "GetStudent" that returns the fullname,rollno,total marks seperated by commas
Type of first_name - str
Type of last_name -str
Type of rollno - int
Type of mark1 - int
Type of mark2 - int
'''    

class Student(Person):
    count = 0
    def __init__(self, fist_name, last_name, rollno,mark1,mark2):
        super().__init__(fist_name, last_name)
        self.first_name = fist_name
        self.last_name = last_name
        self.rollno = rollno
        self.mark1 = mark1
        self.mark2 = mark2
        self.count = Student.count+1
        Student.count = self.count
    
    
    def GetStudent(self):
        return Person.Name(self)+","+ str(self.rollno)+","+str( self.mark1+self.mark2)
        
    
'''
Create another class Staff that inherits the proporties of class Person
Initialize the class variable "count" with value 0
Initialize the class with fist_name,last_name,staffnum
class variable count should have the number of staffs
Create a member function "GetStaff" that returns the fullname and staffnumber seperated by comma
Type of first_name - str
Type of last_name -str
Type of staffnum - int
'''    
  
    
class Staff(Person): 
    count = 0
    def __init__(self, fist_name, last_name, staffnum):
        super().__init__(fist_name, last_name)  
        self.first_name = fist_name
        self.last_name = last_name
        self.staffnum = staffnum
        self.count = Staff.count + 1
        Staff.count = self.count
        
    def GetStaff(self):
        return Person.Name(self)+","+ str(self.staffnum)
            
    # Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:  
if __name__=='__main__':
    students = ast.literal_eval(input())
    staff = ast.literal_eval(input())
    t = []
    s = []
    for i in staff:
        t.append(Staff(i[0],i[1],i[2]))
    for i in students:
        s.append(Student(i[0],i[1],i[2],i[3],i[4]))
    
    for i in t:
        print(i.GetStaff())
    print(Staff.count)

    for i in s:
        print(i.GetStudent())
    print(Student.count)

Digital : Python Programming Use Case_E2_FP

About the author

D Shwari
I'm a professor at National University's Department of Computer Science. My main streams are data science and data analysis. Project management for many computer science-related sectors. Next working project on Al with deep Learning.....

Post a Comment