If you will find any issue; Comment below.
Mini-Project - Python FSP - Sprint2- Python Programming:-
Welcome to Python - Exception Handling, Decorators, Generators, Advanced Modules.
Question 1: Exception Handling.
Solution 1: Exception Handling.
# Enter your code here. Read input from STDIN. Print output to STDOUT
# Task 1:
# Create a function which can accept a list of integer as input and store in variable 'A'.
# then, divide the first value by a second value of the list and calculate the sum of the list.
def handelExe():
while True:
# Check and handle the following exceptions:-
try:
error= False
A= input().strip().split()
# Task 2. If the input values are not integer it will raise a 'ValueError'.
# and print the message "Enter a valid numbers".
if False in list(map(lambda x: x.isdigit(), A) ):
raise ValueError
A = list(map( lambda x : int(x), A))
# Task 3. If zero division error occure raise 'ZeroDivisionError'.
# and print the message "Second value should not be zero".
if A[1]==0:
raise ZeroDivisionError
# Task 4. If an index error occure raise 'IndexError'.
# and print the message "Number of Inputs should be more than one".
elif len(A)<2:
raise IndexError
# Task 5. If sum of the list is greater than 100 raise 'Exception'.
# and print the message "Sum of the list should be less than 100", and the sum of the list.
elif sum(A)>100:
raise Exception
# Task 6. If there is no exception occured print the division value.
else:
print(A[0]/A[1])
break
except ValueError:
print("Enter a valid numbers")
except ZeroDivisionError:
print("Second value should not be zero")
except IndexError:
print("Number of Inputs should be more than one")
except Exception:
print("Sum of the list should be less than 100")
print(sum(A))
# Task 7: After that, read the file "file.txt" if not able to read raise the OSError and
# print the message "File not found".
try:
if not open('file.txt', 'r'):
error= True
raise OSError
except OSError:
print("File not found")
# Task 8: At the end of the handling print the message "Code has been executed".
finally:
print("Code has been executed")
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here: # Note: Do Not modify the below code if __name__ == '__main__': handelExe()
Question 2: Decorators.
Solution 2: Decorators.
# Enter your code here. Read input from STDIN. Print output to STDOUT
# Task 1:
# Create decorators to perform string join, find the aver age and find the total.
# The decorator should print the output in the following pattern:
# The decorator should print each function names as "function_name Decorator".
# Create Decorator here
def dic(func, *args):
fn= func.__name__
print( str(fn) + " Decorator" )
def inn(self, *args):
func(*args)
return func
# Print "Joining Strings..." and joined string output.
@dic
def joinString(*args):
strh =args
print("Joining Strings...")
return "".join(strh)
# Print "Calculating Total..." and the calculated total.
@dic
def findTotal(*args):
A = args
print("Calculating Total...")
return sum(A)
# Print "Calculating Average..." and the calculated average.
@dic
def average(*args):
A = args
Len = len(A)
print("Calculating Average...")
return sum(A)/Len
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
strInput=list(map(str,input().split()))
numInput=list(map(int,input().split()))
print(joinString(*strInput))
print(average(*numInput))
print(findTotal(*numInput))
Question 3: Generators.
Solution 3: Generators.
# Enter your code here. Read input from STDIN. Print output to STDOUT
# Task:
# Create a function which can accept integer as an input.
def inpt():
numb = int(input())
return numb
# Then create generators to perform and print the sum of the square
# of the Fibonacci Series for the given input.
def generator_sum():
n = inpt()
def generator_inner():
a, b = 0, 1
for i in range(n+1):
yield a
a, b = b, a + b
fibonacci_list = list(generator_inner())[1:]
# print(fibonacci_list)
def fib_square(fib_lst):
generator_obj = ( i**2 for i in fib_lst)
return generator_obj
fibonacci_square_list= list(fib_square(fibonacci_list))
# print(fibonacci_square_list)
print( sum(fibonacci_square_list))
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
generator_sum()
Question 4: Advanced Modules.
Solution 4: Advanced Modules.
import collections
# Enter your code here. Read input from STDIN. Print output to STDOUT
# Task 1:
# Create a function 'actionDic' that should take n number of keys and values to create
# dictionary and merge it with the dictionary stored in the old_dic using 'ChainMap'.
def actionDic():
key = input().rstrip().split()
value = input().rstrip().split()
n= int(input())
new_dic = dict(zip(key, value))
merged = dict(collections.ChainMap(old_dic, new_dic) )
# Then pass the dictionary as a arguments to the function 'printDic' to print the values of the dictionary.
printDic(**merged)
res = getEven(n)
print(res)
def printDic(**args):
for k, v in args.items():
print(f'{v} is the value of the key {k}')
# Task 2:
# Create a function 'getEven', which can take an integer as input and return the sum of the even numbers between 0 to integer value.
# Then print getEven function from 'actionDic'.
def getEven(n):
even_lst = []
for i in range(1,n+1):
if i%2==0:
even_lst.append(i)
return sum(even_lst)
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
old_dic = {'ram':6,'mouse':4,'monitor':3}
actionDic()