0% found this document useful (0 votes)
144 views65 pages

Dokumen - Pub - Microsoft Python Certification Exam 98 281 Amp Pcep Preparation Guide Introduction To Programming Using Python Pcep Certified Entry Level Python Programmer 9798589463590

This document is a preparation guide for the Microsoft Python Certification Exam 98-281 and the PCEP – Certified Entry Level Python Programmer. It includes an introduction to programming using Python, outlines the exam structure, and provides modules covering various topics such as data types, control flow, and input/output operations, along with practice tests. The guide assumes prior programming knowledge and offers links for further resources and discounts on practice courses.

Uploaded by

balaji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
144 views65 pages

Dokumen - Pub - Microsoft Python Certification Exam 98 281 Amp Pcep Preparation Guide Introduction To Programming Using Python Pcep Certified Entry Level Python Programmer 9798589463590

This document is a preparation guide for the Microsoft Python Certification Exam 98-281 and the PCEP – Certified Entry Level Python Programmer. It includes an introduction to programming using Python, outlines the exam structure, and provides modules covering various topics such as data types, control flow, and input/output operations, along with practice tests. The guide assumes prior programming knowledge and offers links for further resources and discounts on practice courses.

Uploaded by

balaji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Microsoft Python Certification Exam

98-281 & PCEP –Preparation Guide


Introduction To Programming Using
Python
PCEP – Certified Entry Level Python
Programmer
Raman Publications
R. Raman
Dhyanashri Raman
Archith Raman
Copyright © 2021 Raman Publications
All rights reserved.
ISBN : 9798589463590

Table of Contents
1 Introduction – Microsoft & PCEP Certification Guide
2 Module 1: Perform operations using data types & operators
3 Module 2: Control Flow with Decisions & Loops
4 Module 3: Input / Output operations using console & Files
5 Module 4: Document & Structure code, Error & Exceptions
6 Module 5: Full Practice Test #1
7 Module 6: Full Practice Test #2
ABOUT THE AUTHOR
1 Introduction – Microsoft & PCEP Certification
Guide
This exam guide prepares a student to get a Microsoft
certification Exam-98-281 Introduction to programming using
Python.
This exam guide also prepares the student to get a PCEP –
Certified entry level Python Programmer, awarded by the Python
institute.
This guide assumes certain level of programming knowledge. It
is not a beginner text book.

Pre-Requisites:
Basic programming language skills using Python with hands on
experience

Microsoft Certification Exam Details:


Total Questions: 40
Total Duration: 45 minutes
Python certification: 98-381 Introduction to programming using
python
Minimum Pass score: 70%

Useful Links:

Link to details : [Link]


us/learning/[Link]
Syllabus Link : [Link]
us/learning/[Link]?cid=55264

About this Exam Guide


This guide has four individual modules & practice tests and two full final
practice tests. The 6 modules are as follows:
Module 1: Perform Operations Using Data Types and Operators
(20 – 25%)
Module 2: Control Flow with Decisions & Loops (25-30%)
Module 3: Perform input/output operations using console & Files
Code (20-25%)
Module 4: Document & Structure Code, Error/Exceptions,
Module/Tools (20-25%)
Module 5: Python Certification Microsoft 98-381 Full Practice
Test #1
Module 6: Python Certification Microsoft 98-381 Full Practice
Test #2

Thank you for your Purchase: Here is our additional little gift:
If you need to access an online version of this same exact guide in the test
format with timer and scoring enabled. for an 70% discount on Udemy
please contact us at : sayaadriinc@[Link] . We will be able to send
you a link to the discounted Udemy course for you to practice real time.
Now lets get to the course
GOOD LUCK TO GET CERTIFIED
2 Module 1: Perform operations using data types &
operators
Module 1: Perform Operations Using Data Types and
Operators (20 – 25%) - Test #1
In this module the following concepts will be tested: . This is the first
module in the syllabus.
Assign data types to variables.

Evaluate an expression to identify the data type Python will


assign to each variable
Identify str, int, float, and bool data types

Perform data and data type operations

Convert from one data type to another type; construct data


structures; perform indexing and slicing operations

Perform Arithmetic, Comparison and Logical Operations

Assignment; Comparison; Logical; Arithmetic; Identity (is);


Containment (in)

Determine the sequence of execution based on operator precedence

Assignment; Comparison; Logical; Arithmetic; Identity (is);


Containment (in)

Select the appropriate operator to achieve the intended result

Assignment; Comparison; Logical; Arithmetic; Identity (is);


Containment (in)
Module 1- Practice Test 1 Total Time: 45 Minutes; Minimum Pass
score is: 70%
Answers – Module 1, Practice Test 1
Module Answer & Explanation
Questio
ns
M1Q1 Answer: 2.
Output Value of a is : False Value of b is : 1
First 2 lines assign values to variables a and b using the
assignment operator.
Line 3: There are 2 operators used,
Lne4:First one is python comparison operator ==. It compares
values of a and b and returns a boolean result. In this case a
== b evaluates to be False.
Hence value of False is assigned to a.
So the output of this program is :
Value of a is : False Value of b is : 1

M1Q2 Answer: 5. m will get the value of 5.


Since there is a conversion of the float to int explicitly for m,
m = int(i/2) = int(5.5) = 5.
For others, j,k,l all will be evaluated as float and will get a
value of 5.5

M1Q3 Answer: 1, 3.
Statement 3 & Statement 4 will give errors. Arithmetic
operators like multiplication, division is not allowed when
using strings.
However, Statement 1, Statement 2 are correct. the output for
those will be : s1=ab and s2 = ac Since string addition is an
allowed operation.

M1Q4 Answer: 3. 6
Length of the string without spaces is 5.
len([Link]() ) length = 8 means length of the string with
Module Answer & Explanation
Questio
ns
spaces on left is 8. ( Right spaces are trimmed here )
Hence number of spaces on the left is 8-5 = 3.
Now len([Link]() ) = 8 which means all the left spaces are
trimmed and length of the string including the right spaces is
8.
Hence the number of spaces on the right is 8-5 = 3.
So the total number of spaces is : Spaces on left + spaces on
right = 3+ 3 = 6

M1Q5 Answer: 3,4


v is true since it has one array element in it and the value of
the element is false. So count of v is non zero hence v is true
Same with x, x has one element and hence of count is non zero
and x is true
z has a space element in it. count of z is also one making z as
true as well
y on the other hand is an empty string so bool of an empty
string will result in false. So y is false.
M1Q6 Answer: 4
First two lines assign values to variables a and b using the
assignment operator.
Line 3: There are 2 operators used,
First one is python comparison operator == . It compares
values of a and b and returns a boolean result. In this case a ==
b evaluates to be False .
Hence value of False is assigned to a.
So the output of this program is :
Value of a is : False Value of b is : 1
Module Answer & Explanation
Questio
ns
M1Q7 Answer: 1,2,3,4
print (s1[1:2] ) In this statement the string from index 1 is
picked which is the second position of the string. S1[1] = ‘e’
print ( s1[1:-3] ) In this statement, the index is counted from
the right most and the character next to the character 3
positions from right is picked which is ‘e’
print ( s1[1] ) character at position 1 is picked which is again
‘e’
print ( s1[-4]). In this, the 4th character from the right is
picked which is also ‘e’

M1Q8 Answer: 1, 2
k-= q = 6 + 2j - 6 - 2j = 0.0 + 0.0j. Both real and imaginary
parts are zero.
k = k - (-q) = 6 +2j - ( 6 + 2j ) = 0.0 + 0.0j both real and
imaginary parts are zero.
For the other 2 equations the value of K is non zero for both
real and imaginary parts.
k = 12 + 4j ( for k -=q )
k = 24 + 8j ( for k = k - q - q )

M1Q8 Answer: 4
S1[:n} when n=5 wil assign all characters from the 5th
position to the left of the string
So a = “Hello”
b will be all characters from 5th position to the right of the
string.
So b = “ Welcome Good bye”
Module Answer & Explanation
Questio
ns
When you add a and b both will give the original string.
Hence a+b = s1. So the if condition will become true and
assign value 200 to amount.
Hence amount = 200 will be printed.

M1Q10 Answer: 4
Like regular data types, complex data types obey arithmetic
operations. In the above example The real parts will get
arithmetically computed and the imaginary part will get
arithmetically separately.
k = k - q will equate to ( 6 + 2j ) - ( -9 + 2j ) = (6 + 9 ) + ( 2j -
2j ) = 15 + 0j
Real part is 15.0 and the imaginary part is : 0.0

M1Q11 Answer: 1
Summer Season will be printed since a is non zero value and
the if condition will be evaluated to be true for a = -1.

M1Q12 Answer: 2.
Python variables are case sensitive . Hence in this example
while the name of the variable is the same count , they are
treated as different as each one has a different case.
So the assignment for count = 33 and only that value will be
printed.

M1Q13 Answer: 3
Both the comparison operator and boolean data type will give
the same output of False, False

M1Q14 Answer: 2
Module Answer & Explanation
Questio
ns
count_me_in = 20 is a correctly assigned variable as it
follows the naming convention for variables.
However 2go starts with a number hence it will error.
"count me" is a string literal and cant be used as a variable.

M1Q15 Answer: 3
It will print 100.5
As today will be calculated in float for both addition as
well as division.

M1Q16 Answer: 1, 3
Block 1 , Block 2 are an implementation that kind of
simulates the multi comment functionality.
Python really doesn’t have a built in way to do multi line
comments like C# or other programming languages. Block 3
will error out when the program is run

M1Q17 Answer: 4
Using two’s complement binary notation for positive integers,
the value of x which is 5 is represented as follows in binary.
000001 01 ( 1*2^2 + 0*2^1 + 1*2^0) = 4 + 0 + 1 = 5
Now the operator << is a left shift operator and <<=1 means
shift the binaries to the left by 1 position so the new binary for
X<<=1 is
00001 01 0 = ( 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 ) = 8 + 0 + 2
+ 0 = 10
Hence value of x will be 10
Module Answer & Explanation
Questio
ns
M1Q18 Answer: 5
z is a valid complex number and the result is 2 + 1j.

M1Q19 Answer: 2
x = 20 and Y = True
Since the OR condition is true for x > 10 ( 20 > 10 )

M1Q20 Answer: 1,2,3,4


All arithmetic operations are allowed between complex
numbers.

M1Q21 Answer: 1,3,4


The 2 list cities and metro_cities have identical values
hence their comparison will be always true.
best_cities get its value from comparing cities and
metro_cities hence this is also true.
worst_cities compares for inequality for the 2 lists
containing values in different positions hence it will be true
The opposite of worst_cities using the NOT operator will
make the last statement false.

M1Q22 Answer: 3
All of the values will be false since boolean evaluation of
empty items and zero will always be false.

M1Q23 Answer: 3
the assignment of i is not an executable line of code as it is
Module Answer & Explanation
Questio
ns
embedded in a comment line. Hence i as a variable is never
defined or initialized. As a result, the print statement will :
NameError: name 'i' is not defined"

M1Q24 Answer: 1
Since a is false a or not (a ) will always be true as they are
complementary to each other in evaluation and they are
joined by or operator the if statement will always be true
and it will go inside the if condition and print "Will not
come here"

M1Q25 Answer: 4
The first 3 variables are allowed as per the variable rule
definition of it has to start with an _ or with a letter. However
the last one
-loopvar = 20 starts with an hypen (-) instead of an
underscore(_) or an alphabet, hence this will error out.

M1Q26 Answer: 1
While the print statement will give results, False, 22, 1, it is
not advisable to use python reserved words as variable
names.

M1Q27 Answer: 2
Winter Season will be printed since a is zero value and the
if condition will be evaluated to be false for all the 3
conditions, a, b, c.

M1Q28 Answer: 2
print( Prog_Languages == AI_Languages ) #Print_1 This
one checks equality though they are not same object. Check by
Module Answer & Explanation
Questio
ns
value is done, as both objects have same number and value of
each elements, hence this will result in True
print( Prog_Languages is AI_Languages ) #Print_2. This one
will print False. As both Prog_Languages and AI_Languages
are 2 different objects in memory and don't refer to the same
memory area. Hence it will be False .
print( New_Languages == Prog_Languages ) #Print_3.
Equality check hence will be true as content and number of
elements match. result will be True
print( New_Languages is Prog_Languages ) #Print_4. T his
will be True . Since New_Language assignment to
Prog_Languages
New_Languages = Prog_Languages, makes the
New_Language variable point to the same memory location as
Prog_Languages
print( New_Languages == AI_Languages ) #Print_5. This
will be True . Same reasoning as #Print_1
print( New_Languages is AI_Languages ) #Print_6. This
will be False , same reasoning as #Print_2

M1Q29 Answer: 1, 2, 5, 6
count is an integer
temp is a float
count is not a float
temp is not an integer
The is operator identifies the type of count and type of temp
and matches with the right data type. In case of count , it is
int data type hence "count is an integer" is printed. For temp ,
it is a float data type hence "temp is a float" is printed.
The is not operator identifies that type of count and type of
Module Answer & Explanation
Questio
ns
temp does not belong to the right data type.
count is not a float data type and temp is not an int data
type

M1Q30 Answer: 1
The in operator finds the value of a to be available in the
list b. In this example -10 is available in the list b, hence it
will print
a is in b

M1Q31 Answer: 3
Now a is a small list instead of one value, when compared
with b , there is an exact element which is a list by itself in b
[15,20] at 7th position. Hence the comparison with in operator
will evaluate the if statement to be true , hence it will print a
is in b

M1Q32 Answer: 1
While the list in a has same number of elements and values
are same, still they are not in the same order as the element in
the 7th position in b, hence the not in will be true and it will
print “a is not in b”

M1Q33 Answer: 2, 3
Clearly list a has different types of objects than in list b, hence
the if condition of a not in b will be true and it will print a is
not in b.
Now the variable c has one element list with an inner element
of a set {7}.
The variable b also has this element list which has set element
Module Answer & Explanation
Questio
ns
{7} in it.
Hence the c not in b condition will evaluate to be false and the
else condition will be executed. The output printed will be c
is in b

M1Q34 Answer: 3
The indexing starts with zero based.
So veggies[0] = Bell Pepper
Veggies[1] is Okra
Veggies[2] is Egg Plant
So the value 2 for the index my_favorite will print “Egg
Plant” as an output.

M1Q35 Answer: 2, 4
my_favorite can take both the values of 1 or -3 to get the same
desired result as the list can be traversed from left to right
using positive indices and from right to left using negative
indices.
Hence veggies[0] will be "Bell Pepper"
veggies[1] will be "Okra"
If you do negative indices then
veggie[-1] will be "Squash"
veggie[-2] will be "Egg Plant"
veggie[-3] will be "Okra"
Module Answer & Explanation
Questio
ns
M1Q36 Answer: 3
All list are zero index based my_favorite[2:5] will go to the
item which is my_favorite[2} ( included in the lit ) up to
my_favorite [5] ( not included but excluded from the list )
So the output will start at my_favorite[2] which is Egg Plant
and will go up to Potato only
So the output will be : ['Egg Plant', 'Squash', 'Potato']

M1Q37 Answer: 1
veggies[-4:-1 ]
if you do reverse count from the end, -1 is the last element , -2
is the second to last so on and so forth. Applying this logic :
veggies[-4] will be squash and the list goes up to -1 but not
including the veggies[-1]st element, which means Broccoli
will not be included.
Hence the final list is. Veggies[-4], veggies[-3], veggies[-2]
['Squash', 'Potato', 'Beans' ]

M1Q38 Answer: 2
Since the list is zero based index.
The index of “Milk_FatFree” will be 2 ,
So to replace it the following code is required.
Groceries[2] = “Cheese”

M1Q39 Answer: 3
append() method adds the item to the end of the list, In this
example “Oats” is added to the item at the end.
Module Answer & Explanation
Questio
ns
['Milk', 'Egg', 'Cheese', 'Bread', 'Ham', 'Oats' ]

M1Q40 Answer: 3
In this problem, a mathematical division is being
performed.
First a new item is added “Oats” using the append()
method. This increases the length of groceries by 1.
len(groceries) = 6.
groceries[2:4] will give a new list as : [‘Cheese’, ‘Bread’].
So length of this list is 2 .
The division= 6/2 = 3.0
Hence it will print 3.0 as the output.

3 Module 2: Control Flow with Decisions & Loops


Module 2: Control Flow with Decisions & Loops (25-30%): Practice
Test
In this module the following concepts will be tested
:
Branching Statements:

If – else statements
Elif statements
Nested and compound expressions

Iterations:

While loops
For loops
Break; continue ; pass
Nested loops containing compound conditions

Construct & Analyze code segments that include function


definitions:

Call signatures, default values, return, def, pass


Module 2- Practice Test 2, Total Time : 45 Minutes; Minimum Pass
score is : 70%
Module Question Answer Choices
-Questions
M2Q1
print ( "Enter Score..." ) 1. 100
score = float(input()) 2. 50
if ( (type(score) is int or 3. Eighty
type(score) is float ) and 4. -20
score < 50 ) :
print ( "Grade is Fail")
elif ( (type(score) is int or
type(score) is float ) and
score >= 50 ):
print ("Grade is Pass")
elif ( type(score) is not int
or type(score) is not float ):
print("Invalid scores")
Select all the answers ,
when given as an input to
score will print "Grade is
Pass"

M2Q2
score = float(input()) 1. Twenty
2. -20
if ( (type(score) is int or 3. 50
type(score) is float ) and 4. Pass
score < 50 ) : 5. 65
print ( "Grade is Fail")
elif ( (type(score) is int or
type(score) is float ) and
score >= 50 ):
print ("Grade is Pass")
elif ( type(score) is not int
or type(score) is not float ):
print("Invalid scores")
Module Question Answer Choices
-Questions
Which of the inputs
will either print "Grade is
a Fail" or will have
runtime error?

M2Q3
a = 10 1. Runtime error
b=0 : Divide by zero
print ( a/b ) if (b > 0 ) else 2. 0
print ( a ) 3. 10
4. -10
What will be the output of
the above program?
M2Q
4 brothers_age = 20 1. This program will
sisters_age = 21 not work and give
error
print ( "Older Brother") if ( 2. Older Brother
brothers_age > sisters_age) else 3. same Age
print( "same age") if ( brothers_age 4. Younger Brother
== sisters_age ) else
print("Younger Brother")
What will be the output of this
program?

M2Q
a = 200 1. None of the
5
b = 200 below
2. pass
if ( a == b ): 3. print ( a/a-b )
#Your_Statement 4. print ( a/(a-b) )
else:
print(" a and b are equal values"
)
What are the statements that can
be substituted in the section
#Your_Statement above to make
the program execute without any
errors?

M2Q
6 a = 10 1. if ( a is 10 ) :
b = [10] 2. if ( a = 10 ) :
3. if ( a is '10' ) :
#YOUR_IF_STATEMENT 4. if ( a == 10 ) :
print ( 'A***' ): 5. if ( True is ( a in b ) ) :

Which of the below if statements


can be substituted in the code
above for
#YOUR_IF_STATEMENT
block to make the program print
A*** as output. ?

M2Q
7 Marking_Period_Scores = [96, 95, 1. 96
99, 97 ] 2. FAIL
3. A+
avg_mp_scores = ( 4. A
sum(Marking_Period_Scores) )// 5. Error
len(Marking_Period_Scores)
grades={ 0:"A+", 1:"A", 2:"B+",
3:"B", 4:"C+", 5:"Fail" }
grade_key = 0
if ( avg_mp_scores >= 95 ) :
pass
elif( avg_mp_scores >=90 and
avg_mp_scores < 95 ):
grade_key = 1
elif ( avg_mp_scores >=85 and
avg_mp_scores < 90 ):
grade_key = 2
elif ( avg_mp_scores >=80 and
avg_mp_scores < 85 ):
grade_key = 3
elif ( avg_mp_scores >=60 and
avg_mp_scores < 80 ):
grade_key = 4
elif ( avg_mp_scores < 60 ):
grade_key = 5
print ( grades[grade_key] )
What will the grade that will be
printed as output?

M2Q
8 x = input("Enter a number") 1. Error
x = float ( x) 2. Number is
if 0 <= x <= 10: between ten and
print ("Number is between zero twenty
and ten inclusive" ) 3. Number i
elif 10 < x < 20: between zero and
print ( "Number is between ten ten inclusive
and twenty" ) 4. Number is
else: outside the range
print ( "Number is outside the zero to twenty
range zero to twenty" )
what will be the output of the
above program if the input to x is
= 17?

M2Q
9 student_age = 13 1. Kid
2. Teen
print ("toddler") if 0 < student_age 3. Toddler
< 5 else print ("kid") if 5 <= 4. Adult
student_age < 13 else print
("Teen") if 13 <= student_age <=
19 else print("Adult")
what will be the output of the
above program?

M2Q
10 t_var = ("CA", "NJ", "MA" ) 1. Count value is : 0
s_var = {"Austin", "Dallas", 2. Count value is : 1
"Atlanta" } 3. Count value is : 2
d_var = {"C1":"North America", 4. Count value is : 3
"C2":"Australia", "C3":"Asia" }
count = 0
if ( type(t_var) is tuple ):
count += 1
if ( type(s_var) is set ):
count += 1
if ( type(d_var) is dict ):
count += 1
print ( "Count value is : ", count )
What is the output of the above
program?

M2Q
11 i=1 1. 7
2. 3
while i < 6: 3. 4
i += 1 4. 0
if i == 3 :
break
else:
i+=1
print ("Value of i is : ", i)
i += 1
print ("Value of i is : ", i)
what will be the final value of i
printed from the above program?

M2Q
12 num_array= 1. if ( index > 3 and
[-2,-1,0,1,2,3,4,5,6,7,8,9,10 ] index < 6 ) :
2. if ( index < 10 ) :
index = 0 3. if ( index > 2 and
while ( index < len(num_array) ) : index < 9 ) :
4. if ( index >=3 and
if ( index == 0 ): #CODE_X index <= 8 ) :
print(num_array[index] )
index+=1

what will you replace in


#CODE_X for the if condition to
print values from 1 through 6 as
output?

M2Q
13 i=1 1. 6
2. 10
while i < 6: 3. 7
i += 1 4. 9
if (i % 2) == 0 :
i+=1
continue
i+=10
break
else:
i+=1
i += 1
print ("Value of i is : ", i)
What will be the final output
value of i in the above program?

M2Q
14 a = 'HELLO' 1. 4
i=0 2. 5
3. 0
while i < len(a): 4. 3
i += 1
pass
print('Value of i :', i)

What will be the output of i in


the above program?

M2Q
15 count = 0 1. 1
while (count < 2 ): count += 1; 2. 2
print("Hello World") 3. Error
How many times the "Hello
World" will be printed in the
above program?

M2Q
16 count = 0 1. 2
while (count < 2 ): count += 1; 2. 0
print("Hello World"); print ("*") 3. 1
4. Error
How many times * will be
printed in the above program?

M2Q
17 a = { 1,2,3 } 1. 1
2. 2
i=0 3. 3
while ( a ):
i += 1
[Link]()
print ( "Value of i is: ", i )
What is the value of I in the
above program?

M2Q
18 a = { 1,2,3 } 1. Error
2. An empty set .
b=a Value of b is:
i=0 set()
while ( a ): 3. Value of b is : {1,
i += 1 2, 3}
[Link]()
print ( "Value of b is: ", b )
what is the value of b printed in
the above program?

M2Q
19 a = {'^', '&', '*', 'x' } 1. -1
count = -1 2. 3
while ( a ) : count+=1; [Link](); 3. 4
break; 4. 0

print ( "count is : ", count )


What is the final output value of
count that will be printed in the
above program?

M2Q
20 a = {0, 1, 2 } 1. a = 100
2. a = {}
while ( a ): 3. [Link]()
#CODE_X 4. break
print ("Hello")
The above program prints the
statement Hello infinity times as
it will never exit.
What should be a one line code
that should replace #CODE_X,
that will allow it to exit the while
loop.

M2Q
21 lst =[-22,(20,10),{11,32},{},{}, 1. 15
[40,50],3,4, {"a":"b"},0 ] 2. 11
count=0 3. 9
for i in range(len(lst)): 4. 10
if type(lst[i])is list:
count = i
elif type(lst[i])is tuple:
count = i
elif type(lst[i])is set:
count = i
elif type(lst[i])==dict:
count = i
else :
count += 1
print("Count = ", count)
What is the final output printed
for count in the above program?

M2Q
22 lst =[-22,(20,10),{11,32},{},{}, 1. 9
[40,50],3,4, {"a":"b"},0 ] 2. 3
count=0 3. 0
dict_count = 0 4. 10
for i in range(len(lst)):
if type(lst[i])is list:
count = i
elif type(lst[i])is tuple:
count = i
elif type(lst[i])is set:
count = i
elif type(lst[i]) is dict:
print ( lst[i] )
dict_count += 1
else:
count += 1

print("Dictionary Count = ",


dict_count )
what is the output of dict_count
in the above program?

M2Q
23 my_list=(-4,-2,0,2,4,6,8,10,12,14) 1. 2
my_dict={1:'A',99:'B','B':2, 2. 3
3:'C',4:'D',5:'E',6:'F'} 3. 4
4. 6
lst_count = 0
for element in my_list:
if element in my_dict:
lst_count += 1
print(lst_count )
What is the output of lst_count?

M2Q
24 d_m = ( { 0, 1, 22 },{ -99, -160}) 1. 22
2. 0
new_l = 0 3. Error
for item in d_m: 4. -160
for i in item:
if ( new_l >= i ):
new_l = i

print( new_l )
What is the output of new_i?

M2Q
25 Prime_Count = 0 1. 2
count = 0 2. 3
3. 16
for x in range (2, 12, 3 ) : 4. 0
count = 0
for i in range(2,x) :
if ( x % i > 0) :
count = 1
else:
count = 0
break
if ( count > 0 ):
Prime_Count += 1

print ( Prime_Count )
What is the value of
Prime_Count in the above
program?

M2Q
26 my_list = (-4,6,8) 1. 1
my_dict = {1:'A',99:'B','B':2, 2. 2
3:'C',4:'D',5:'E',6:'F'} 3. 3
4. 0
lst_count = 0
for element in my_list:
if element in my_dict:
continue
else:
lst_count += 1
print(lst_count )
What is the output of lst_count?

M2Q
27 neg_Count = 0 1. 5
for i in range ( -5, 16, 3 ) : 2. 3
if ( i < 0 ) : 3. 2
neg_Count += 1 4. 0
print ( "Value of Negative Count :",
neg_Count )
what is the final value of
neg_Count in the above
program?

M2Q
28 def adjust ( lst ): 1. Error
2. [1, 2, 3, 4, 5, ]
[Link](99) 3. [1, 2, 3, 4, 5, 99]
4. 99
my_lst = [1, 2, 3, 4 , 5 ]
adjust ( my_lst )
print ( my_lst)
What is the output of my_lst in
the above program?

M2Q
29 def my_function(*kids): 1. Error
for k in kids[2]:
print("The Oldest child is " 2. The Oldest
, k) child is Stacy
my_function( ("Keith", 10 ),
("Steve", 12 ), ("Stacy",14 ) )
The Oldest child is
14
What is the output of this
program? 3. The Oldest
child is Keith

The Oldest child is


10

4. The Oldest
child is Steve

The Oldest child is


12
M2Q
30 def my_add( x, y=22 ): 1. Error
return ( x + y ) 2. Final answer is
: 100
num1 = 100 3. Final answer is
ans = my_add( num1 ) : 22
print ( "Final answer is : ", ans ) 4. Final answer is
What is the output of ans? : 122

M2Q
31 def arb_add( *num ) : 1. Error
2. (1, 2, 3, 4, 5, 6, 1,
return ( num + num ) 2, 3, 4, 5, 6)
print ( arb_add(1,2,3,4,5,6) ) 3. (2, 4, 6, 8, 10, 12
)
What is the output of this
program?

M2Q
32 def my_function(kid3, kid2, kid1 ): 1. Error
print ( "Youngest kid is :", kid3 ) 2. Youngest kid is :
June
my_function(kid1="Megan", 3. Youngest kid is :
kid3="Victor", kid2="June" ) Megan
What will the function 4. Youngest kid is :
my_function() print in the above Victor
program?

M2Q
33 num_arr =[2000, 1. 10
100,20,10,70,50,60,40,-900,30,90,8
0] 100
def find_range():
2. 2000
​num_arr.sort()
​return -900
num_arr[0],num_arr[-1]
3. -900
min_num, max_num =
find_range() 2000
print ( min_num )
print ( max_num ) 4. 2000
What does the above program 2000
print?
M2Q
34 def mult_func ( var1 = 10, var2 = 1. print ( mult_func(
3): var1 = -6, var2 =
3))
return ( var1 * var2 ) 2. print (
print ( mult_func( var1 = -6, var2 = mult_func(9) )
3)) 3. print (
print ( mult_func(9) ) mult_func(var2=6
print ( mult_func(var2=6) ) ))
print ( mult_func(6,5) ) 4. print (
print ( mult_func() ) mult_func(6,5) )
print ( mult_func(-8, -5) ) 5. print (
mult_func() )
Which print statements will print 6. print (
output greater than or equal to mult_func(-8, -5)
( >= 30 )? )

M2Q
35 def swap_num( x, y ): 1. num1 =
z=x swap_num
x=y ( num1 )
y=z 2. num2 =
swap_num(num1)
return x, y 3. num1, num2 =
num1 = 200 swap_num(num1,
num2 = 300 num2)
4. Error
#CODE_X
print ( num1, num2 )
What line of code will you write
in #CODE_X so that the values
of num1, num2 are reversed.?

M2Q
36 def func1(): 1. 80
return 10 2. 40
3. Error
def func2(): 4. 8
return ( func1() * 2 )
def mult( x , y ):
return x * y
print ( mult ( func2() , 4 ) )
What is the output of this
program?

M2Q37
def determine_adult( **kwargs ): 1. Jack Adams is a
str = "" Adult
final_str = kwargs["fname"] + 2. Jack Adams is a
" " + kwargs["lname"] + " is a " Minor
3. Error
age = int(kwargs["age"] ) 4. Jack is a Adult
if ( age > 18 ):
return final_str + "Adult"
else:
return final_str + "Minor"
print ( "Enter first name, last Name,
age in the same order")
fname= input()
lname = input ()
age = input()
print (determine_adult(
fname=fname, lname=lname,
age=age ) )
What is the final print statement
print? if inputs are Jack Adams
22
M2Q
38 def do_something(i): 1. Error
pass 2. Nothing will be
printed ( None )
i = 20 3. 20
print ( do_something (i) )
What is the output of the above
program?

M2Q
num_sum = 6 1. Arithmetic
39 def recursive_sum( k ) : progression sum
if ( k == 0 ) : is : 21
return k 2. Arithmetic
else: progression sum
k = k + recursive_sum(k-1 ) is : 36
return k 3. Infinity
print ( "Arithmetic progression sum 4. Error
is : ", recursive_sum(num_sum ) )
What is the output of the above
program?

M2Q
40 def myFunc1(x): 1. [-2, -3, 30, 22]
new_lst = [-2, -3, 30, 22]
return new_lst [-2, -3, 30, 22]

lst = [10, 11, 12, 13, 14, 15] 2. [10, 11, 12, 13,
print ( myFunc1(lst) ) 14, 15]
print(lst)
[10, 11, 12, 13, 14, 15]
What are the various print
statements that will be printed? 3. [-2, -3, 30, 22]

[10, 11, 12, 13, 14, 15]


4. Error
Answers – Module 2, Practice Test 2
4 Module 3: Input / Output operations using console
& Files
Module 3: Perform input/output operations using console & Files Code
(20-25%): Practice Test
In this module the following concepts will be tested:
Input/Output Operations
Construct & analyze code segments that perform file input / output
operations.

Open
Close
Read
Write
Append
Check existence
Delete with Statement

Construct & analyze code segments that perform console input /


output operations.

Read input from console


Print formatted text
Use of command line arguments
Module 3- Practice Test 3, Total Time: 45 Minutes; Minimum Pass
score is : 70%
Answers – Module 3, Practice Test 3
5 Module 4: Document & Structure code, Error &
Exceptions
Module 4: Document & Structure Code, Error/Exceptions,
Module/Tools (20-25%):
Document & Structure Code:
· Document code segments using Comments and documentation
strings.

Use indentation, white space, comments, and documentation


strings.
Generate documentation using pydoc.

Perform trouble shooting & Error Handling:

Aaalyze detect and fix code segments that have errors.


Analyze and Construct code segments that handle exceptions

Perform operations using modules & Tools

Use built in modules to perform basic operations


Use built in modules to perform complex operations
- Practice Test 4, Total Time: 45 Minutes; Minimum Pass score is
: 70%
Answers – Module 4, Practice Test 4
6 Module 5: Full Practice Test #1
Python Certification Microsoft 98-381 Full Practice Test #1 –
Syllabus

Total Questions: 40
Total Duration: 45 minutes
Python certification: 98-381 Introduction to programming using
python
Minimum Pass score: 70%
Covers all modules in this full test. See individual module test
for details
Module 1: Perform Operations Using Data Types and Operators
(20 – 25%)
Module 2: Control Flow with Decisions & Loops (25-30%):
Module 3: Perform input/output operations (20-25%):
Module 4: Document & Structure Code, Error/Exceptions,
Module/Tools (20-25%):
Module 5- Full Final Practice Test 1 Total Time : 45 Minutes;
Minimum Pass score is : 70%
Answers – Module 5, Full Final Practice Test 1
7 Module 6: Full Practice Test #2
Python Certification Microsoft 98-381 Full Practice Test #1 –
Syllabus

Total Questions: 40
Total Duration: 45 minutes
Python certification: 98-381 Introduction to programming using
python
Minimum Pass score: 70%
Covers all modules in this full test. See individual module test
for details
Module 1: Perform Operations Using Data Types and Operators
(20 – 25%)
Module 2: Control Flow with Decisions & Loops (25-30%):
Module 3: Perform input/output operations (20-25%):
Module 4: Document & Structure Code, Error/Exceptions,
Module/Tools (20-25%):
Module 6- Full Final Practice Test 2 Total Time: 45 Minutes;
Minimum Pass score is: 70%
Answers – Module 6, Full Final Practice Test 2
Module Answer & Explanation
Questio
ns
M6Q1 Answer: 3.
Output:
0
1
2
2
a;-1] = a[3] = 3 Now in the for loop a[-1] or a[3] is replaced
with each element of a itself
In first iteration : a[=1] , a[3] will be replaced with value of 0
so end of iteration the list a looks like this : [0, 1, 2,0 ] . This
value is printed 0
In 2nd iteration : a[=1] , a[3] will be replaced with value of 1
so end of iteration the list a looks like this : [0, 1, 2,1 ] . The
value of a[-1] is now 1 and it is printed 1
In 3rd iteration : a[=1] , a[3] will be replaced with value of 2
so end of iteration the list a looks like this : [0, 1, 2,2 ] . The
value of a[-1] is now 1 and it is printed 2
In 2nd iteration : a[=1] , a[3] will be replaced with value of 2
so end of iteration the list a looks like this : [0, 1, 2,2 ] . The
value of a[-1] is now 1 and it is printed 2
Hence the final output is
0
1
2
2

M6Q2 Answer: 1, 3.
Output: The below 2 code blocks will print 0, 1 as output
Module Answer & Explanation
Questio
ns
for i in range( int(2.0 ) ):
print (i)
For the above block it takes values from 0 through 2 ( 2
excluded ) and prints 0, 1
for i in range(-1, 2, 1 ) :
if ( i < 0 ):
continue
print (i)
For the above block, the value of i starts from -1 and goes
from -1, 0, 1 up to 2 in the increment of 1. However the if
condition will continue the for block for i value less than 0
hence -1 will not be printed but 0, 1 will be printed.
For the below block it results in compilation error as
range cant have float values it has to be int values.
for i in range( int(2.0 ) ):
print (i)for i in range( float(2 ) ):
print (i)

M 6Q3 Answer: 2
Output is: men of honor
If you examine the string to be lstripped k*z+2@+ # nn $
each of the characters k, *, z, 2, @, +, #, $ are all present in
the first part of str1, hence they are stripped. If the first part
had any other character other than the ones listed, then it will
stop stripping.

M 6Q4 Answer: 4.
Output is:
Module Answer & Explanation
Questio
ns
5
10
30
40
Since every time for the inner for loop this is what will be
printed.
a[0][0] * b[0][0] = 1 * 5 = 5
a[0][1] * b[0][1]= 2 * 5 = 10
a[1][0] * b[1][0] = 3 * 10 = 30
a[1][1] * b[1][1] = 4 * 10 = 40

M6Q5 Answer: 3.
Output is
4
4
The string has total five i's however the first character I is
capitalized so the count will not count the first capitalized I it
counts the rest of the i's in the string which is 4.
In the second print statement it start from a range of 27-27 =
0 and goes up to the length of the string which is 27 so it
searches the whole string again for i giving an output of 4.

M6Q6 Answer: 3.
Output is: 4
the split function splits the string in to 4 parts using space as
the delimiter hence
lst = ['Welcome', 'To', "New', 'York' ] and length of lst is
printed as 4

M6Q7 Answer: 3.
Answer: **abcdef**
center function aligns the string text to be centered and in this
Module Answer & Explanation
Questio
ns
example a padding of * is used. Hence * is used before and
after the string to keep the string in the middle and fill up 10
positions as the length given in center is 10.

M6Q8 Answer: 3.
Output: (99, 'Atlanta', 8.88, 99, 'Atlanta', 8.88)
Since the multiplication operation , simply adds the same
content by 2 times.

M6Q9 Answer: 3.
Output is: 30
sum ( lst) = 2+4+6+8+10 = 30

M6Q10 Answer: 3.
Output: ['a', 3, '*', [-10, -20], 'a', 3, '*', [-10, -20]]
lst + lst concatenates the two list in to a combined list.

M6Q11 Answer: 3.
Output is as follows:
[{3, 4}]
[3, 4, 2]
[3, 4, [2, -2]]
In the first function call, below, only one parameter is passed.
So that parameter a dictionary object goes in to the first
receiving argument a, and b has a default value of an empty
set. Hence [Link](a) will add the dictionary object as the
only element to the set. hence out put is : [{3, 4}]
print ( my_func( {3,4 } ) )
In the second function call , a becomes 2 and b = [3,4] and
simply appending a to b gives out put as [3, 4, 2 ]
Module Answer & Explanation
Questio
ns
print ( my_func( 2, [3,4 ] ) )
In the third function call, a takes the value of a set [2, -2] and
b takes [3, 4],hence [Link](a) becomes [[3,4,[2,-2] ]
print ( my_func( [2, -2], [3,4 ] ) )

M6Q12 Answer: 3.
Output: 20
b = lamda x: is an anonymous function definition of b. x
parameter is passed to lambda function. The code next to
colon(:) is executed and returns the value.
In this example b takes an argument of 10 and calls 2 other
functions of get_var1() and get_var2() , then returns the
following :
10 + 2*5 = 20 as output.

M6Q13 Answer: 3.
Output is:
New York
Welcomes You Welcomes You Welcomes You
when str *3 is executed, the string str repeats 3 times, the
* operator followed by an int is used as a repeater when it
operates on strings.
when function is called first time. The factor parameter has a
default value of 1, hence repeats New York only once.
When function is called next time a value of 3 is passed to the
factor which results in repeating. Welcomes You 3 times

M6Q14 Answer: 3.
Output:
x value is : 100
Module Answer & Explanation
Questio
ns
x value is : 2
The keyword global x used in each function allows the
function to modify the variable x defined outside.
So when function1 calc_quotient ( 10 ) is called this
calculates x = 100/10 = 10. Now the new value of x = 10
When second function is called calc_remainder(4) ths
calculates the remainder of the division , x = 10%4 = 2 as
remainder.
so Final value of x is 2
So before calling the 2 functions value of x is 100
After calling both the functions value of x is now set to 2.

M6Q15 Answer: 4.
Output:
Total1 is : 12
Total2 is : 25
Since the function calc_sum can take variable arguments the
following happens:
during the first call for total1 : calc_sum(2, 4, 6 ) = 2 + 4
+ 6 = 12 is returned
during the second call for total2= calc_sum( 1, 3, 5, 7, 9 ) =
1 + 3 + 5 + 7 + 9 = 25 is returned

M6Q16 Answer: 2.
Output is:
9
27
81
The for loop assigns for each iteration a different lambda
definition for k
In iteration 1; k = lambda x: x**2 this will calculate the
Module Answer & Explanation
Questio
ns
square of the input parameter, so when k(3) is called 3*3 = 9
is printed.
In iteration 2; k = lambda x: x**3 this will calculate the cube
of the input parameter, so when k(3) is called 3*3*3 = 27 is
printed.
In iteration 3; k = lambda x: x**4 this will calculate the
fourth power of the input parameter, so when k(3) is called
3*3*3*3 = 81 is printed.

M6Q17 Answer: 3.
Output:
100
While the code in try block executes, the return value for the
function will be returned from finally block since finally takes
precedence over try block when it comes to return statement.

M6Q18 Answer: 3.
Output is:
#Line-1 ValueError
#Line-2 ZeroDivisionError
Below are the details of the errors that will be printed for each
of the code segments above.
i = int('hello' ) #Line-1
ValueError: invalid literal for int() with base 10: 'hello'
j = 1/0 #Line-2
ZeroDivisionError: division by zero

M6Q19 Answer: 3.
Output:
except ( NameError, ZeroDivisionError ) :
Module Answer & Explanation
Questio
ns
Yes you can define multiple exception in one except block as
follows:

M6Q20 Answer: 1.
Output: When no exception occurs.
The else block is designed to be executed only when there is
no exception when the statements within try executes
correctly.

M6Q21 Answer: 3.
Output:
0
1
0
The program goes into the while loop for values of i = 0, 1, 2
and each time it prints i and then increments i
so it prints 0, 1 and when it equals 2 it exits the loop and goes
to the else statement and print 0 again.

M6Q22 Answer: 4.
Output:
0
1
2
Since k in y is used in both for loops, by the time it completes
the inner loop it ran out of the for condition for the outer loop
so it prints 0, 1, 2 based on print statement from the inner loop
for just 1 iteration of out loop and when it comes back to the
second iteration for outer loop , the condition goes out of
bounds and it exits.
Module Answer & Explanation
Questio
ns
M6Q23 Answer: 2.
Output:
1
1
2
3
5
8
13
For iteration 1: y = 1 and prints 1 and x = 1, y = 1
For iteration 2: y = 1 and prints 1 again and now x = 1, y = 1
+1=2
For iteration 3: y = 2 and prints 2 and now x = 2 and y = 2
+1=3
for iteration 4: y = 3 and prints 3 and now x = 3 and y = 3 + 2
=5
for iteration 5: y = 5 and prints 5 and now x = 5 and y = 3 + 5
=8
for iteration 6 ( last iteration ): y = 8 and prints 8 and now x =
9 and y = 5 + 8 = 13.
exits the loop as y = 13 which is greater than 9. and then
finally prints the main print statement as y = 13

M6Q24 Answer: 3.
Output:
54321
531
The condition for iteration lst[::-1 ] means there is 2 colons
used ( ::) with -1 this means that the list is reversed and then
the reversed values are printed hence 5 4 3 2 1 is printed.
where in second example lst[::-2] double colon and -2 is
Module Answer & Explanation
Questio
ns
used, which means thelist is reversed and every 2 item is
picked skipping an item in the middle. so lst[0], lst[2], lst[4]
will be picked from the reversed list
hence output for the #Line-2 print is 5 3 1

M6Q25 Answer: 3.
Output:
1
2
3
The for loop has a condition of lst[:-2]: this means starting
from index = 0 up to the 2nd position from last. -1 represents
the last item and -2 represents the 2nd to last so for the list
lst = [1,2, 3, 4,5 ] the index goes from 0 through 3 not
including index 3. so it prints
lst[0], lst[1], lst[2] = 1, 2, 3 as output

M6Q26 Answer: 2.
Output:
[Link]
The fd..name prints the name of the file that the fd points to.

M6Q27 Answer: 2.
Output:
Tuncate() does nothing
Truncate(20) keeps the first 20 bytes in the file.
Truncate(0) cleans out the remainder in the file and makes it
zero byte file

M6Q28 Answer: 3.
Module Answer & Explanation
Questio
ns
Output:
[Link]() used to get the current position of file pointer.
whereas [Link]() allows the pointer to move to a respective
offset position from the beginning position of file only. This
offset from beginning of file is applicable only to test. As seek
cant go to current position or from reverse direction in a text
file in python 3.0

M6Q29 Answer: 1, 2
Output:
'rb', 'r' both of these can be used to open a binary file for
ready only
where 'rt' or 't' is only used for text files and not for binary
files.

M6Q30 Answer: 2.
Output: Nothing is printed.
The reason nothing is printed is the file is opened in an 'a+'
mode, the file pointer is already at the end of the content to
begin to append to the file so a read at the end of content will
not get any content.
To make the program work use the mode as r or r+ mode or
use a seek(0) to go to beginning of file

M6Q31 Answer: 3.
Output:
[0, 1, 2, 3, 10, 20, 30, 40, 50, 60]
i will iterate 2 times.
Iteration 1: list 1 is used [0.10.20] and for this iteration j will
iterate 3 times for each value of 0, 10, 20 every time it adds
Module Answer & Explanation
Questio
ns
10 to each value and append to the list so the lst will have 10,
20, 30 added as part of this iteration.
Iteration 2: list item 2 is used [30, 40, 50] and for this iteration
j will iterate 3 times for each value of 30, 40, 50 every time it
adds 10 to each value and append to the list so the lst will
have 40 ,50,60 added as part of this iteration.
so final list lst will be [0, 1, 2, 3, 10, 20, 30, 40, 50, 60]

M6Q32 Answer: 2.
Output: [5, 20, 30]
[ lst[i][len(lst)-1-i]for i in range(len(lst) ) ]
This loops between i = 0 to 3
Iteration 1: it forms the lst[0][2] = 2
Iteration 2: It forms the lst[1,2] = 20
Iteration 3: It forms the lst[2,0] = 35
Each of the ouput from each iteration will for the nrew list =
[2, 20, 35]

M6Q33 Answer: 3.
Output is: 4
The dictionary has 2 objects a[1] and a['1'] a[1] is
incremented to 2 before it enters the for loop.
then for each iteration count adds to the content of each of the
a[0] and a[1] values
count = 2 + 2 = 4

M6Q34 Answe: 3.
Output:
True
Since endswith() checks the sub string '**y' in the main
Module Answer & Explanation
Questio
ns
string which exists at the end of main string., it returns True

M6Q35 Answer: 3.
Output: 0.5
Based on order of operation and evaluation from left to right.
the division takes precedence over the %
so 17/2 = 8.5
then 8.5%2 = 0.5

M6Q36 Answer: 3.
Answer: 256, 256, 64
Since order of precedence though from left to right, when
comes to power operation the value of 2**3 is evaluated first
before
power of left most 2 is computed
Hence order or operation of Val1, Val2 are the same.
val = 2 ** 2 ** 3 ( power takes precedence) - 256
val2 = 2 ** (2 ** 3) ( paranthesis first, power next ) = 256
and last one paranthesis takes precedence, then power
operation
val3 = (2 ** 2) ** 3 = 64

M6Q37 Answer: 1, 2. 3
Output:
The below statements are correct.
a = 10; b = 22; c = 'a' assignments using semi colon in a
single line is perfectly valid.
str1 = 'hello this is a test \
and continues in next line'
Module Answer & Explanation
Questio
ns
A string assignment can continue using a back slash
character.
lst = [ 1, 2, 3 ,
4,5,6, ]
A list assignment can continue in to multiple lines as long as
they are in a parenthesis.
The if statement is incorrect as it is trying to assign value of i
= 10 than checking i == 10
i=0 ;
if ( i = 10 ): print (i)

M6Q Answer: 4.
38 Output: Teen will be printed.
This explains usage of ternary operator like if clause
if age is between 0 and 5 ( excluding 5 ) it prints toddler
otherwise it goes to next if block
checks for age between 5 and 13 ( and 13 not inclusive ) it
prints kid
third check is between 13 and 19. This will be true and
prints Teen

M6Q Answer: 3.
39
Output: (1,2,3,4,5,6,1,2,3,4,5,6)
This program tests 2 things : 1. variable arguments for the
function using *num and also it does tuple addition. In this
case num as one tuple is added to itself resulting in 12
elements of final tuple that is returned.
Hence it prints the following :
(1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6)

M6Q Answer: 4.
Module Answer & Explanation
Questio
ns
40 Output:
[1]
[1, 1]
[1, 1, 1]
Every time append is called in the function it adds the element
1 to it. Hence the final output has 3 elements of 1.

ABOUT THE AUTHOR


Raman publications is a pioneer group of entrepreneurs who are in IT
programming, IT training & certification industry lead by the the Founder
Mr. R. Raman . The author has 20 years of programming experience in
various IT corporate organizations, an Entrepreneur, a visionary and has
passion to give back to society mainly to those who wants to have a
professional IT career through certifications.
The team has two young Co-Authors Dhyanashri Raman, Archith
Raman who are currently pursuing education in STEM and uses futuristic
programming languages in their day to day life. Their contribution to create
and test all these Python programs in various Python versions lead to this
amazing sure shot guide for getting Microsoft certified in Python.

You might also like