Ge8151-Problem Solving and Python Programming-2086059864-Ge8151 PSPP All Units Merged
Ge8151-Problem Solving and Python Programming-2086059864-Ge8151 PSPP All Units Merged
UNIT-IV
LIST,TUPLES,DICTIONARIES
TWO MARKS:
>>> t[:4]
Output:['a', 'b', 'c', 'd']
>>> t[3:]
Output:['d', 'e', 'f']
>>> t[:]
Output : ['a', 'b', 'c', 'd', 'e', 'f']
Example:
>>>a=[1,2,3]
>>>b=a[:]
>>>print b
[1,2,3].
Index can have negative value, it counts backward from the list.
Example:
>>> Fruit = ['Apple', 'Grapes', 'Orange']
>>>Fruit(0) = ‘pear’
>>>Fruit(-1) = ‘Jackfruit’
>>>print (fruit)
[‘pear’, ‘grape’, ‘Jackfruit’]
6. What is Aliasing?
More than one list variable can point to the same data. This is called an alias.
If ‘A’ refers to an object and you assign ‘ B = A’, then both variables refer to the same
object:
>>> A = [1, 2, 3]
>>> B= A
>>> B is A
True
9. Define Tuples?
A tuple is a sequence of values.
The values can be any type, and they are indexed by integers, so in that respect tuples are a
lot like lists. The important difference is that tuples are immutable.
To create a tuple with a single element, you have to include the final comma:
>>> t1 = ('a',)
>>> type(t1)
<type 'tuple'>
One of the unique features of the python language is the ability to have a tuple on the left
hand side of an assignment statement.
This allows you to assign more than one variable at a time when the left hand side is a
sequence.
Example:
Two element in list (which is a sequence ) and assign the first and second elements of the variables
x and y in a single statement.
A function can only return one value, but if the value is a tuple, the effect is the same as
returning multiple values.
Example:
>>> t = divmod(7, 3)
>>> print t
(2, 1)
Or use tuple assignment to store the elements separately:
>>> quot, rem = divmod(7, 3)
>>> print quot
2
>>> print rem
1
Example:
>>> a = [11,22,33,44]
>>> b =[x*2 for x in a]
>>>b
[22,44,66,88]
Immutable data value: A data value which cannot be modified. Assignments to elements
or slices of immutable values causes a runtime error
Mutable data value: A data value which can be modified .The Types of all mutable value
are compound types.List and dictionaries are Mutable; Strings and Tuple are not.
.
5
Tuples Dictionaries
A tuple is a sequence of values. Python dictionary are kind of hash table
The values can be any type, and they are type.
indexed by integers, so in that respect Dictionary work like associative arrays or
tuples are a lot like lists. The important hashes found in perl and consist of key
difference is that tuples are immutable. value pairs.
Dictionary is one of the compound data type like strings, list and tuple. Every element in a
dictionary is the key-value pair.
An empty dictionary without any items is written with just two curly braces, like this: {}.
Example:
>>> eng2sp = {}
>>> eng2sp["one"] = "uno"
>>> eng2sp["two"] = "dos"
>>> print(eng2sp)
Output:
{"two": "dos", "one": "uno"}
A dictionary can be Created by specifying the key and value separated by colon(:) and the
elements are separated by comma (,).The entire set of elements must be enclosed by curly
braces {}.
Dict={ }
6
Operation Description
cmp(dict1, dict2) Compares elements of both dict.
len(dict) Gives the total length of the dictionary.
type (variable) Returns the type of the passed variable. If passed variable is dictionary,
then it would return a dictionary type.
7
16 MARKS
1. What is List Values? Describe about creating a list, accessing the values in list, deleting a list,
updating a list.
LIST VALUES:
CREATING A LIST:
There are several ways to create a new list, the simplest is to enclose the elements in square Bracket
[]
Output:
['Apple', 'Watermelon', 'Banana']
[17, 12.3]
[]
DELETING A LIST:
Any element in the list can be deleted, del removes an element from a list.
Example:
>>> a=(‘one’,’two’,’three’)
>>>del a(1)
>>>a
8
Output:
(‘one’,’three’)
UPDATING A LIST:
A slice operator on the left side of an assignment can update multiple elements:
>>> t = ['a', 'b', 'c', 'd', 'e', 'f']
>>> t[1:3] = ['x', 'y']
>>> print t
Output: ['a', 'x', 'y', 'd', 'e', 'f'].
2. Explain the basic List Operations and list slices in details with necessary programs.
LIST OPERATIONS:
24. Lists respond to the + and * operators much like strings; they mean concatenation and
repetition here too, except that the result is a new list, not a string.
LIST SLICES:
A sub-sequence of a sequence is called a slice and the operation that performs on
subsequence is called slicing.
>>> t[:4]
Output:['a', 'b', 'c', 'd']
>>> t[3:]
Output:['d', 'e', 'f']
9
>>> t[:]
Output : ['a', 'b', 'c', 'd', 'e', 'f']
Since lists are mutable, it is often useful to make a copy before performing operations..
A slice operator on the left side of an assignment can update multiple elements:
1.List.append( ): 2. List.remove ( )
The method append () appends a passed List.remove() method is to remove the
obj into the existing list. object from the list.
List.remove() method does not return any
Example value but removes the given object from
Eg 1: the list.
x = [123, 'xyz', 'zara', 'abc']; Example
x.append ( 2009 ); y = [123, 'xyz', 'zara', 'abc', 'xyz'];
print ( "Updated List : ", x) y.remove('xyz');
Output: Updated List: [123, 'xyz', 'zara', 'abc', print( "List 1 : ", y);
2009] y.remove('abc');
print( "List 2: ", y)
Eg 2: Output:
>>> t = ['a', 'b', 'c'] List 1: [123, 'zara', 'abc', 'xyz']
>>> t.append('d') List 2: [123, 'zara', 'xyz'
>>> print ( t)
Output:['a', 'b', 'c', 'd']
3. List.count ( ) 4. List.insert ( )
The method returns the count of how List.insert ( ) method inserts an object
many times an element occurs in specified into the list at the offset of an index.
list. Syntax : List.insert (index,object) #index
Example position starts from 0.
X = [123, 'xyz', 'zara', 'abc', 'xyz',123, ‘xyz’]; Example
Print (“Count for 123:”,X.count(123)) X = [123, 'xyz', 'zara', 'abc'];
Print (“Count for Zara:”,X.count(‘zara’)) X.insert (3,2009)
Print (“Count for xyz:”,X.count(‘xyz’)) Print( “Final List :”,X)
Output: Output:
5. List.pop ( ) 6. List.Sort ( )
List.pop ( ) method is used to return the List.Sort ( ) method is used to sort the
item at the given index position from the items in the list.
list and the removes that item.
Example
Example X = [54, 12, 85, 65, 74, 90];
X = [123, 'xyz', 'zara', 'abc']; Print(“sorted list:”, X.sort ( ))
Print( “List 1 :”,X.pop(0))
Print (“List 2: ”, X.pop(3)) Output:
Output: Sorted list= [12,54 ,65,74,85,90]
7.List.reverse ( ) 8. List.clear ( )
List.reverse ( )can reverse the order of List.clear() can remove all values
items in a list by using this method. contained in it by using this method.
Example Example
X = [123, 'xyz', 'zara', 'abc',’xyz’]; X = [123, 'xyz', 'zara', 'abc',’xyz’];
X.reverse( ) X..clear( )
Print ( “List 1 :”,X) Print (X)
4. Discuss about the list loop, list mutability with examples.(8 mark)
In List loop, we use a loop to access all the element in a list. A loop is a block of code that
repeats itself until it run out of items to work with or until a certain condition is met.
Our loop will run once for every item in our list,
List Mutability:
Mutability is the ability for certain types of data to be changed without entirely recreating it.
List is a mutable data type; which mean we can change their element.
The syntax for accessing the elements of a list is the same as for accessing the characters of
a string—the bracket operator.
The expression inside the brackets specifies the index. Remember that the indices start at 0.
Lists are represented by boxes with the word “list” outside and the elements of the list
inside.
Fruits refer to a list with three elements indexed 0, 1 and 2.
Numbers contains two elements; the diagram shows that the value of the second element has
been reassigned from 123 to 5.
.
The in operator also works on lists.
>>> Fruit = ['Apple', 'Grapes', 'Orange']
>>> ‘Apple’ in Fruit
True
>>> ‘Watermelon’ in Fruit
False
Index can have negative value, it counts backward from the list.
Example:
Output:
Original List =[“red”, “green”, “blue”, “purple”]
[“pink”, “green”, “orange”, “purple”].
5. Discuss about the list aliasing, cloning list and list parameter with examples.
LIST ALIASING:
Since variables refer to object, If ‘A’ refers to an object and you assign ‘ B = A’, then both
variables refer to the same object:
>>> A = [1, 2, 3]
>>> B= A
>>> B is A
True
In this case, Diagram looks like this
[1,2,3]
B
13
The association of a variable with an object is called a reference. In this example, there are
two references to the same object.
An object with more than one reference has more than one name, then the object is said to
be aliased.
If the aliased object is mutable, changes made with one alias affect the other:
>>> B[0] = 9
>>> print A
[9, 2, 3]
Although this behaviour can be useful, it is error-prone. In general, it is safer to avoid
aliasing when you are working with mutable objects.
In this example:
A = ('banana')
B=( 'banana')
It almost never makes a difference whether A and B refer to the same string or not.
CLONING LIST:
If we want to modify a list and also keep a copy of the original, we need to be able to make
a copy of the list itself, not just the reference.
This process is sometimes called cloning, to avoid the ambiguity of the copy.
The easiest way to clone a list is to use the slice operator
>>>a=[1,2,3]
>>>b=a[:]
>>>print b
[1,2,3]
Taking any slice, creates a new list. In this case the slice happens to consists of the whole
list.
Now we are free to make changes to b without worrying about list ‘a’.
>>>b[0]=5
>>>print a
>>>print b
[1,2,3]
[5,2,3]
LIST PARAMETERS:
Passing a list to a function, the function gets a reference to the list. If the function modifies a
list parameter, the caller sees the change.
The parameter t and the variable letters are aliases for the same object. The stack diagram
looks like this:
__Main__ Letters
0 ‘a’
1 ‘b’
Delete_head t 2 ‘c’
6. Explain about tuples and also the concept of tuple assignment and tuples as return value with
example.
A tuple is a sequence of values.
The values can be any type, and they are indexed by integers, so in that respect tuples a like
lists. The important difference is that tuples are immutable.
To create a tuple with a single element, you have to include the final comma:
>>> t1 = ('a',)
>>> type(t1)
<type 'tuple'>
Another way to create a tuple is the built-in function tuple. With no argument, it creates an
empty tuple:
>>> t = tuple()
>>> print (t)
()
15
If the argument is a sequence (string, list or tuple), the result is a tuple with the elements of
the sequence:
>>> t = tuple('lupins')
>>> print (t)
('l', 'u', 'p', 'i', 'n', 's')
Because tuple is the name of a built-in function, avoid using it as a variable name.
Most list operators also work on tuples. The bracket operator indexes an element:
>>> t = ('a', 'b', 'c', 'd', 'e')
>>> print (t[0])
'a'
And the slice operator selects a range of elements.
>>> print t[1:3]
('b', 'c')
But if you try to modify one of the elements of the tuple, you get an error:
>>> t[0] = 'A'
TypeError: object doesn't support item assignment
can’t modify the elements of a tuple, but you can replace one tuple with another:
>>> t = ('a', 'b', 'c', 'd', 'e')
>>>t = ('A',) + t[1:]
>>> print (t)
('A', 'b', 'c', 'd', 'e')
TUPLE ASSIGNMENT:
One of the unique features of the python language is the ability to have a tuple on the left
hand side of an assignment statement.
This allows you to assign more than one variable at a time when the left hand side is a
sequence.
In the below example , we have two element list (which is a sequence ) and assign the first and
second elements of the variables x and y in a single statement.
>>> m = ( ‘have’, ‘fun’)
>>> x,y= m
>>> x
‘have’
>>>y
‘fun’
A function can only return one value, but if the value is a tuple, the effect is the same as
returning multiple values.
For example, if you want to divide two integers and compute the quotient and remainder, it
is inefficient to compute x/y and then x%y. It is better to compute them both at the same
time.
The built-in function divmod takes two arguments and returns a tuple of two values, the
quotient and remainder.
You can store the result as a tuple:
>>> t = divmod(7, 3)
>>> print t
(2, 1)
7. What is dictionary in python? List out the operations and methods with example.
Keys are unique within a dictionary while values may not be.
The values of a dictionary can be of any type, but the keys must be of an immutable data
type such as strings, numbers, or tuples.
Dictionary is one of the compound data type like strings, list and tuple. Every element in a
dictionary is the key-value pair.
An empty dictionary without any items is written with just two curly braces, like this: {}.
Creating a Dictionary:
A dictionary can be Created by specifying the key and value separated by colon(:) and the
elements are separated by comma (,).The entire set of elements must be enclosed by curly
braces {}.
17
Dict={ }
Example:
#Keys-Value can have mixed datatype
Example:
>>Dict2={“Name”: “Zara”, “Subject”:[“Maths”, “Phy”, “Chemistry”],
“Marks”:[198,192,193], “Avg”:92}
>>Dict2[“Name”]
>>Dict2[“Avg”]
>>Dict2[“Subject”]
Output:
Zara
20.1
[“Maths”, “Phy”, “Chemistry”]
Example:
Example
>>> My_dict={'Name':'Nivetha','rank':5,'Average':78.9}
>>> My_dict['rank']=3
>>> My_dict
{'Name': 'abi', 'rank': 3, 'Average': 78.9}
DICTIONARY METHODS:
8 dict.get(key, default=None) For key, returns value or default if key not in dictionary
dict.has_key(key)
9 Returns true if key in dictionary dict, false otherwise
DICTIONARY OPERATION:
Operation Description Input Function Output
Dict1={“Name”:”zara”,”Age”:14,”sex”:”M Cmp(dict1,di 1
Compares
cmp(dict1, ”} ct2) 0
dict2) elements of both
Dict2={“Name”:”zara”,”Age”:14} Cmp(dict2,d
dict.
Dict3={“Name”:”zara”,”Age”:14} ict3)
len(dict) Gives the total Dict1={“Name”:”zara”,”Age”:14,”sex”:”M Len(dict1) 2
length of the
dictionary. ”} Len(dict2) 3
Dict2={“Name”:”zara”,”Age”:14}
str(dict) Produces a Dict1={“Name”:”zara”,”Age”:14,”sex”:”M Str(dict1) {“Name”:
printable string ”zara”,”A
representation of a ”} ge”:14,
dictionary ,”sex”:”M
”}
type Returns the type of Dict1={“Name”:”zara”,”Age”:14,”sex”:”M Type(dict1) <type
(variable) the passed variable. ‘dict’>
If passed variable ”}
is dictionary, then
it would return a
dictionary type.
19
Example:
>>>dict1 = {1: “Fruit”, 2: “Vegetabe”,3: “Fish”}
>>>Print(dict1)
>>>{1: “Fruit”, 2: “Vegetabe”,3: “Fish”}
>>> del dict[1]
>>>print(dict1)
>>>{ 2: “Vegetabe”,3: “Fish”}
The len function also works on dictionaries; it returns the number of key:value pairs:
>>> len(dict1)
3
Where:
Expr(x) is an expression,usually but not always containing X.
Iterable is some iterable.An itrable may be a sequence or an unordered collection a list, string or
tuple.
Example 1:
>>> a = [11,22,33,44]
>>> b =[x*2 for x in a]
>>>b
[22,44,66,88]
Example 2:
Given the following list of strings:
Names= [‘alice’, ‘ramesh’, ‘nitya’]
A list of all upper case Names
A List of Capitalized ( first letter upper case)
>>>[x.upper() for x in names]
[‘ALICE’, ‘RAMESH’, ‘NITA’]
>>>[x.capitalize() for x in names]
[‘Alice’ , ‘Ramesh’ , ‘Nita’]
Example 3:
>>> fish_tuple=('blowfish','clowfish','catfish','octopus')
>>> fish_list=[fish for fish in fish_tuple if fish != 'octopus']
>>> print(fish_list)
['blowfish', 'clowfish', 'catfish']
20
Example 4:
My_list=[]
for x in [20,40,60]:
for y in [2,4,6]:
My_list.append(x*y)
print (My_list)
Output: [40, 80, 120, 80, 160, 240, 120, 240, 360]
Note: This code multiplies the items in the first list (x) by the items in the second list (y) over each
iteration
Program For Example 4 using List Comprehension
My_list=[x*y for x in [20,40,60] for y in [2,4,6]]
print(My_list)
Output: [40, 80, 120, 80, 160, 240, 120, 240, 360]
List Comprehensions allows us to transform one list or other sequence into a new list. They Provide
a concise syntax for completing the task and limiting the lines of code.
Example 5:
#To create a simple list
x=[ i for i in range (10)]
print (x)
Output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ILLUSTRATIVE PROGRAMS:
1. SELECTION SORT:
def selectionSort(alist):
for fill slot in range(len(alist) - 1, 0, -1):
positionOfMax = 0
for location in range(1, fillslot + 1):
if alist[location] >alist[positionOfMax]:
positionOfMax = location
temp = alist[fillslot]
alist[fillslot] = alist[positionOfMax]
alist[positionOfMax] = temp
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
selectionSort(alist)
print(alist)
OUTPUT:
[26, 54, 93, 17, 77, 31, 44, 55, 20]
2. INSERTION SORT:
def insertionSort(alist):
for index in range(1,len(alist)):
currentvalue = alist[index]
position = index
while position > 0 and alist[position - 1] >currentvalue:
alist[position] = alist[position - 1]
position = position - 1
alist[position] = currentvalue
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
insertionSort(alist)
print(alist)
21
OUTPUT:
[54, 26, 93, 17, 20, 77, 31, 44, 55]
3. MERGE SORT:
def mergeSort(alist):
print("Splitting ",alist)
if len(alist)>1:
mid = len(alist)//2
lefthalf = alist[:mid]
righthalf = alist[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i <len(lefthalf) and j <len(righthalf):
if lefthalf[i] <righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1
while i <len(lefthalf):
alist[k]=lefthalf[i]
i=i+1
k=k+1
while j <len(righthalf):
alist[k]=righthalf[j]
j=j+1
k=k+1
print("Merging ",alist)
alist = [54,26,93,17,77,31,44,55,20]
mergeSort(alist)
print(alist)
OUTPUT:
Splitting [54, 26, 93, 17, 77, 31, 44, 55, 20]
Splitting [54, 26, 93, 17]
Splitting [54, 26]
Splitting [54]
Merging [54]
Splitting [26]
Merging [26]
Merging [26, 54]
Splitting [93, 17]
Splitting [93]
Merging [93]
Splitting [17]
Merging [17]
Merging [17, 93]
Merging [17, 26, 54, 93]
Splitting [77, 31, 44, 55, 20]
Splitting [77, 31]
Splitting [77]
Merging [77]
22
Splitting [31]
Merging [31]
Merging [31, 77]
Splitting [44, 55, 20]
Splitting [44]
Merging [44]
Splitting [55, 20]
Splitting [55]
Merging [55]
Splitting [20]
Merging [20]
Merging [20, 55]
Merging [20, 44, 55]
Merging [20, 31, 44, 55, 77]
Merging [17, 20, 26, 31, 44, 54, 55, 77, 93]
PROBLEM SOLVING & PYTHON PROGRAMMING
UNIT – I ALGORITHMIC PROBLEM SOLVING
PART-A
1. What is an algorithm?
Algorithm is defined as a step by step procedure for solving any problem. The sequence of steps to be
performed in order to solve a problem by the computer is known as an algorithm.
7. What is Pseudocode?
Pseudocode came from two words. Pseudo and Code Pseudo means imitation and Code
refer to instructions written in a programming language.
8. What are the rules for drawing a flowchart?
The standard symbols should only be used.
The arrowheads in the flowchart represent the direction of flow in the problem.
The direction of the flow from top to bottom (or) left to right.
The flow lines should not cross each other.
Keep flowchart as simple as possible.
Words in the flowchart should be common and easy to understand.
More than one flowcharts connected by using connectors.
10. List out the basic design structure (or) basic logic structure.
Sequence structure.
Selection structure.
Loop structure.
19. What are the steps required to solve the problem using algorithm?
Understanding the problem.
Ascertaining the capabilities of the computational device.
Choosing between exact and approximate problem solving.
Algorithm design techniques.
Method of specifying an algorithm
Proving an algorithm’s correctness
Analysing an algorithm.
Coding an algorithm.
20. Differentiate Iteration and Recursion.
Iteration Recursion
An iterative function is one that loops to repeat A recursive is a function calls itself repeatedly
some part of the code. until some specified condition has been satisfied.
Iterative approach involves four steps, In recursive function, only base condition
initialization, condition, execution and updation. (terminate condition) is specified.
Whereas iterative approach makes your code
Recursion keeps your code short and simple
longer.
Recursion is slower than iteration due to
Iteration is faster.
overhead of maintaining stack
21. List the advantages of Recursive functions.
Recursion can produce simpler, more natural solutions to a problem.
It is written with less number of statements.
Recursive functions are effective.
It requires few variables which makes program clean.
It is useful for branching.
Testing Debugging
Finding and locating the defect. Fixing the defect.
Done by testing team. Done by development team.
Testing is to find the defects Debugging is to remove the defects
PART – B
1. What is algorithm? Explain characteristics, quality and representation.
Algorithm is defined as a step by step procedure for solving any problem. The
sequence of steps to be performed in order to solve a problem by the computer is known
as an algorithm.
Characteristics of an algorithm:
Quality of algorithm:
Representation of algorithm:
Algorithm has a starting point and a final point. Between these two points are the
instructions that solve the problem.
Algorithms often have steps that repeat or require decisions.
Algorithm can be expressed in any language from natural languages to
programming languages.
Example:
Step 1: start
Step 2: Read the value of radius r
Step 3: calculate area=3.14*r*r
Step 4: Print the area of circle.
Step 5: Stop
2. Explain in detail about building blocks of algorithms.
Instruction/Statements
State/Selection
Control flow
Functions
(i) Instruction/Statements:
A statement is the smallest standalone element of a programming language that
expresses some action to be carried out.
Kinds of statements:
i. Simple statements
Assignment:A=A+2
Goto:goto next;
Return: return 10;
ii. Compound statements
Block:begin------------end
Do-loop:do-------------while(i!=10)
For-loop:for(…)----------------
A statement is executed, with an expression is evaluated.
(ii) State:
Flow of control (or) control flow is the order function calls, instructions, and
statements are executed or evaluated when a program is running.
Program control structures are defined as the program statements that specify the
order in which statements are executed.
(i)Sequence Control Structures
Sequential control structure is used to perform the actions one after another.
This structure is represented by writing one process after another.
Example
WRITE C
END
(a)IF…THEN Structures
This makes a choice between two processes. If the condition is true it performs
the process. If the condition in false it skips over the process.
Pseudocode
IF condition THEN
Process 1
……..
……..
ENDIF
Flowchart
YES
IF
CONDITION
PROCESS
NO
Example:
IF age>=58 THEN
WRITE person gets retirement
ENDIF
Pseudocode Flowchart
IF condition THEN
Process 1
…..
.
ELSE
Process 2
…..
…..
ENDIF
Example
IF n%2= = 0 THEN
WRITE n is even
ELSE
WRITE n is odd.
This is a multiway selection structures that is used to choose one option from many
options.
ENDCASE is used to indicate the end of the CASE structure.
Pseudocode
CASE TYPE
Case choice – 1:
Process 1
break;
Case choice – 2:
Process 2
….
….
Case choice-n:
Process n
….
END CASE
Flowchart Choice
READ num1,num 2
Result=num1 +num 2
WRITE result
Guidelines for writing pseudocode:
Only one statement per line: Readability improves if just one action for the
computer is written in one statement.
Capitalized initial keyword: Keyword like READ,WRITE etc.
Example: IF,ELSE,ENFIF,WHILE,ENDWHILE etc.
Indent to show hierarchy: In loop, states and iterations the logically
dependent statements must be indent.
Example:
If a>b then
Print a
ELSE
Print b
End multi-line structures: To improve readability the initial state and end of
the several line must be specified properly.
Example: ENDIF for IF statement.
Keep statement language independent: The programmer must never use the
syntax of any programming language.
Advantages of pseudocode:
Disadvantages of pseudocode:
In drawing a proper flow chart all necessary requirements should be listed out in logical
order.
The flowchart should be clear and easy to follow.
Only one flow line should come out from process symboL
Only one flow line should enter a decision symbol, but two or more flow lines, can leave
the decision symbol
Start Stop
If the flow chart becomes complex, it is better to use connector symbol to reduce the
number of flow lines.
Example: Adding two numbers
Decide on:
Computational means exact vs
approximate, algorithm design
technique solving
Design an algorithm
Prove correctness
Pseudo code:
It is a mixture of a natural language and programming language like constructs.
Pseudo code is usually more precise than programming language.
Flowchart:
Flow chart is a method of expressing an algorithm by a collection of connected geometric
shapes containing descriptions of the algorithm steps.
Simplicity:
Simpler algorithms are easier to understand and easier to program.
The resulting programs usually contain fewer bugs.
Generality:
Generality of the problem the algorithm solves.
The set of input it accepts.
Iteration and recursion are key computer science techniques used in creating algorithms and
developing software.
ITERATION
Iterative are programs that follow a path from the starting instruction till the end of the
algorithm.
Iterative functions are on that loops to repeat some part of the code.
Using a simple loop to display the numbers from one to ten is iterative process.
RECURSION:
Recursive function is one that calls itself again to repeat the code.
Recursion is a problem, solving approach by which a function calls itself repeatedly until
some specified condition has been satisfied.
Recursion splits a problem into one or more simpler versions of itself.
In a recursive algorithm the algorithm calls itself with smaller input values.
The recursive programs require more memory and computation compared with iterative
algorithms.
Example: factorial of a given number.
n!=n x (n-1)!
4!=4 x(4-1)!
=4 x (3!)
=4 x 3 x 2 x1
=24
Advantages of recursive functions:
Recursion can produce simpler, more natural solutions to a problem.
It is written with less number of statements.
Recursive functions are effective where the terms are generated successively to compute
a value.
It requires few variables.
It is useful for branching process.
6. ILLUSTRATIVE PROBLEMS:
1. To find a minimum in a list:
Problem statement: Find in a minimum in a list.
Problem description:
Minimum in a list of elements can be achieved in different ways.
One way is to sort the list of element in ascending order and get the first element as
minimum.
Another method is to compare each element with other.
Assume the first element as minimum element and start comparing with the next
element.
If the next element is smaller than assume the second the minimum and keep
repeating the procedure till the last element.
Algorithm:
Step1: Get the list of elements.
Step2: Assume first element as Min.
Step 3: Compare Min with next element.
Step 4: If MIN is greater than next element; Set MIN=next element
Step 5: Repeat step 3 and 4 till the last element.
Step 6: Display MIN as the minimum element of the list.
.
1
UNIT-III
CONTROL FLOW, FUNCTIONS
SYLLABUS:
Conditionals: Boolean values and operators, conditional (if), alternative (if-else), chained
conditional(if-elif-else); Iteration: state, while, for, break, continue, pass; Fruitful
functions: return values,parameters, local and global scope, function composition,
recursion; Strings: string slices,immutability, string functions and methods, string
module; Lists as arrays. Illustrative programs:square root, gcd, exponentiation, sum an
array of numbers, linear search, binary search.
TWO MARKS
The Boolean data type have 2 values (usually denoted by True or False), When
converting a Boolean to an integer, the integer value is always 0 or 1, but when
converting an integer to a Boolean, the Boolean value is true for all integers except 0.
2. List out the Boolean operators.
➢ Or operator.
➢ And operator.
➢ Not operator.
➢
3. Define conditional statements.
➢ The execution of the program acts according the conditions. This concept is known as
Conditional statements or Branching Statements.
1. If Statement
2. If...else Statement
3. If..elif..else Statement
4. Nested if...elif..Else Statement.
➢ Condition if:The boolean expression after the if statement is called the condition. If it
is true, then the indentedstatement gets executed.
Syntax:
if (Condition):
True Statement Block
➢ Alternative(IF....Else Statement):A second form of the if statement is alternative
execution, in which there are two possibilities and the condition determines which one
gets executed.
2
Syntax:
if (Condition):
True Statement Block
else:
False Statement Block
Example:
Count=0
While(count<9):
Print’the count is:’,count
Count=count+1
False
Test
Condition 1
False
True
elif Test
Condition 2
Body of if –Statement
True Body of Else
Block 1
Body of elif –
Statement Block 2
➢ The break statement can be used in both while and for loops.
Syntax:
Break
Example :
forletter in 'Python':
if ( letter == 'h'):
break
print(“Current Letter :”, letter)
Output:
Current Letter : P
Current Letter : y
Current Letter : t
Continue Statement:
• It returns the control to the beginning of the while loop.
• The continue statementrejects all the remaining statements in the current
iteration of the loop and movesthe control back to the top of the loop.
• The continue statement can be used in both while and for loops.
Syntax:
Continue
Pass Statement:
• It is used when a statement is required syntactically but you do not want any
command or code to execute.
• The pass statement is a null operation; nothing happens when it executes.
Syntax:
Pass
➢ Example: The square function will take one number as parameter and
return the result of squaring that number
➢ Parameter is the input data that is sent from one function to another.
➢ Parameter is of two types,
✓ Actual parameter.
✓ Formal parameter.
4
Actual parameter:
➢ Parameter is defined in the function call.
Formal parameter:
➢ Parameter is defined as part of function definition.
➢ Actual parameter value is received by formal parameter
Example:
H E L L O W O R L D !
0 1 2 3 4 5 6 7 8 9 10
Str=”HELLOWORLD!”
Str[2:5]
O/P = LLO
18. List out the applications of arrays.
Applications - Arrays are used to implement in data structures, such as lists, heaps, hash
tables, deques, queues, stacks and strings.
19. Write a program to iterate a range using continue statement.
Output:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n
An array is a collection of data that holds fixed number of values of same type.
Forexample: if you want to store marks of 100 students, you can create an array for it.
16 MARKS
➢ The Boolean data type have 2 values (usually denoted by True or False), When
converting a Boolean to an integer, the integer value is always 0 or 1, but when
converting an integer to a Boolean, the Boolean value is true for all integers except 0.
Operation Result
X or Y If X is false then y, else X
X and Y If X is false, then x else Y
Not X If x is false,then true else False
The following examples usethe operator ==, which compares two operands and produces True
if they are equal and False
Otherwise:
>>> 5 == 5
True
>>> 5 == 6
False
True and False are special values that belong to the type bool; they are not strings:
>>>type (True)
<type 'bool'>
>>>type(False)
<type 'bool'>
FLOW CONTROL
Conditional Statements:
• The execution of the program acts according the conditions. This concept is known as
Conditional statements or Branching Statements.
➢ The Boolean expression after the if statement is called the condition. If it is true, then
the indentedstatement gets executed.
8
Syntax:
if (Condition):
True Statement Block
Test
Condition
FALSE
TRUE
Explanation:
A>B is a test condition, namely 500>200, if it returns TRUE, it will execute the code
“print ( )”, if it returns FALSE, it will not execute the code “ print( )”.
2.Alternative(IF....Else Statement):
➢ A second form of the if statement is alternative execution, in which there are two
possibilities and the condition determines which one gets executed.
Syntax:
if (Condition):
True Statement Block
else:
False Statement Block
Test
Condition
Example 1:
X=4
if x%2 == 0:
print 'x is even'
else:
print 'x is odd'
Output:
X is even
Explanation:
➢ If the remainder when x is divided by 2 is 0, x is even
➢ If the condition is false, the second set of statements is executed.(i.e) x is odd
➢ If there are more than two possibilities and need more than two branches.
➢ One way to express a computation like that is a chained conditional.
Syntax:
if (Condition 1):
Statement Block1
elif(Condition 2):
Statement Block 2
elif(Condition 3):
Statement Block 3
else:
Statement(s)
False
Test
Condition 1
True
Elif Test False
Condition 2
Body of if –Statement
Block 1 Body of Else
True
Body of elif –
Statement Block 2
10
Example:
X=10
Y=5
if x < y:
print 'x is less than y'
elif x > y:
print 'x is greater than y'
else:
print 'x and y are equal'
Output:
x is greater than y
False True
Test
Condition 1
False Statement 2
TrueStatement 2
Example:
X=10
Y=5
if x == y:
print 'x and y are equal'
else:
11
if x < y:
print 'x is less than y'
else:
print 'x is greater than y'
OUTPUT:
X is greater than y.
1. For Loop
2. While Loop
3. Nested Loop
1. For Loop:
• It executes the sequence of statements multiple times and abbreviates the code that
manages the loop.
• The for – loop repeats a given block of codes by specified number of times.
Flowchart:
Syntax: For each item
For <variable> in <sequence>: in sequence
<statement 1>
<statement 2>
<statement 3> Test FALSE
. EXPRESION
.
.
<statement n>
TRUE
Exit Loop
12
2. While Loop:
• While loop is used, when we need to repeatedly execute a statement or group of
statements until the condition is true.
• It tests the condition before executing the loop body so this technique is known as Entry
Controlled Loop.
Syntax:
While expression:
Statement(s)
Test False
Condition
True
Output: Output:
Count is: 0 0
Count is: 1 1
Count is: 2 2
Count is: 3 3
Exit the Loop 4
3. Nested Loop:
• Nesting is defined as placing of one loop inside the body of another loop.
• It can use one or more loop inside any another while, for..loopetc
Syntax:
For <variable> in <sequence>:
For<variable> in <sequence>:
Statement(s)
Statement(s)
4. STATE:
➢ An algorithm is deterministic automation for accomplishing a goal which, given an
initial state, will terminate in a defined end-state.
➢ When an algorithm is associated with processing information, data is read from an input
source or device, written to an output device, and/or stored for further processing.
➢ Stored data is regarded as part of the internal state of the algorithm.
➢ The state is stored in a data structure.
Break Statement:
• It terminates the current loop and resumes execution at the next statement.
• The most common use for break is when some external condition is triggered requiring
a hasty exit from a loop.
• The break statement can be used in both while and for loops.
• If you are using nested loops, the break statement stops the execution of the
innermost loop and start executing the next line of code after the block.
Syntax:
Break
Condition Code
If Condition
is True
Break
Condition
If condition is false
Example 1: Example 2:
for letter in 'Python': var = 10
if ( letter == 'h'): while var> 0:
break print (“Current variable value :”, var)
print(“Current Letter :”, letter) var = var -1
if (var == 5):
Output: break
Current Letter : P print( "Good bye!")
Current Letter : y
Current Letter : t Output:
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6
Good bye!
15
2.Continue Statement:
• It returns the control to the beginning of the while loop.
• The continue statementrejects all the remaining statements in the current iteration
of the loop and movesthe control back to the top of the loop.
• The continue statement can be used in both while and for loops.
Syntax:
Continue
Condition Code
If Condition
is True
Continue
Condition
If condition is false
Example 1: Example 2:
for letter in 'Python': var = 10
if ( letter == 'h'): while (var> 0):
continue var = var -1
print(“Current Letter :”, letter) print (“Current variable value :”, var)
if (var == 5):
Coninue
Output: Print( "Good bye!")
Current Letter : P
Current Letter : y Output:
Current Letter : t Current variable value : 9
Current Letter : o Current variable value : 8
Current Letter : n Current variable value : 7
Current variable value : 6
Current variable value : 4
Current variable value : 3
Current variable value : 2
Current variable value : 1
Current variable value : 0
Good bye!
16
3.Pass Statement:
• It is used when a statement is required syntactically but you do not want any
command or code to execute.
• The pass statement is a null operation; nothing happens when it executes.
• The pass is also useful in places where your code will eventually go, but has not been
written yet (e.g., in stubs for example)
Syntax:
Pass
Example 1:
forletter in 'Python':
if ( letter == 'h'):
Pass
Print(“This is pass block”)
print(“Current Letter :”, letter)
print(“Good bye”)
Output:
Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good Bye
➢ Example: The square function will take one number as parameter and return the result
of squaring that number.
RETURN VALUES:
➢ The Built-in functions such as the math functions, POW, etc. produce results.
➢ Calling the function generates a value, which we usually assign to a variable or use as
part of an expression.
➢ The first example is area, which returns the area of a circle with the given radius:
def area(radius):
temp = math.pi * radius**2
return temp
17
➢ We have seen the return statement before, but in a fruitful function the return statement
includes an expression.
def area(radius):
returnmath.pi * radius**2
PARAMETERS:
A function in python,
➢ Takes input data, called parameters or arguments.
➢ Perform computation
➢ Returns the result.
Def func(param1,param2);
#computations
Return result
➢ Parameter is the input data that is sent from one function to another.
Actual parameter:
➢ Parameter is defined in the function call.
Formal parameter:
➢ Parameter is defined as part of function definition.
➢ Actual parameter value is received by formal parameter.
Example:
Output:
Enter the number:2
Cube of the given number:8
Call by reference:
➢ A copy of actual parameter is passed to formal arguments and any changes made to the
formal arguments will affect the actual arguments.
Example:
S=10 # s is the global variable
def f1()
S=55# s is the local variable
Print s
Output:
55
COMPOSITION:
RECURSION:
➢ A function is recursive if it calls itself and has a termination condition.
➢ Termination condition stops the function from calling itself.
Example:
def factorial(n):
If n==0:
Return 1
else:
recurse =factorial(n-1)
Result =n* recurse
Return result
19
STRING SLICES:
Example:
>>> s = 'MontyPython'
>>> print s[0:5]
Monty
>>> print s[6:13]
Python
➢ The operator [n:m] returns the part of the string from the “n-eth” character to the “m-
eth” character,including the first but excluding the last.
➢ If you omit the first index (before the colon), the slice starts at the beginning of the
string. If youomit the second index, the slice goes to the end of the string.
Example:
>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ana'
➢ If the first indexes is greater than or equal to the second the result is an empty string,
represented by two quotation marks.
Example:
>>> fruit = 'banana'
>>> fruit[3:3]
➢ An empty string contains no characters and has length 0, but other than that, it is the
same as anyother string.
20
➢ It is tempting to use the [] operator on the left side of an assignment, with the intention
of changing a character in a string.
For example:
>>> greeting = 'Hello, world!'
>>>greeting[0] = 'J'
➢ The “object” in this case is the string and the “item” is the character you tried to assign.
➢ An object is the same thing as a value, but we will refine that definition later. An item is
one of the values in a sequence.
➢ The reason for the error is that strings are immutable, which means you can’t change an
existing string.
➢ The best is to create a new string that is a variation on the original:
>>> greeting = 'Hello, world!'
>>>new_greeting = 'J' + greeting[1:]
>>> print new_greeting
Output:
Jello, world!
➢ This example concatenates a new first letter onto a slice of greeting. It has no effect on
the original string.
>>>word = 'banana'
>>>new_word = word.upper()
>>> print new_word
BANANA
➢ This form of dot notation specifies the name of the method, upper, and the name of the
string to apply the method to, word. The empty parentheses indicate that this method
takes no argument.
➢ A method call is called an invocation; in this case, we would say that we are invoking
upper on the word.
>>>word = 'banana'
>>>index = word.find('a')
>>>print index
1
➢ The find method is more general than our function; it can find substrings, not just
characters:
>>>word.find('na')
21
2
➢ It can take as a second argument the index where it should start:
>>>word.find('na', 3)
4
➢ And as a third argument the index where it should stop:
>>>name = 'bob'
>>>name.find('b', 1, 2)
-1
METHODS:
METHODS DESCRIPTION
Capitalize() Capitalizes first for letter of string
is digit() returns true if string contains only digits and false otherwise.
islower() returns true if string has at least 1 cased character and all cased
characters are in lowercase and false otherwise.
isnumeric()- returns true id a Unicode string contains only numeric characters and
false otherwise
isupper() returns true if string has at least one cased character and all cased
characters are in uppercase and false otherwise.
STRING MODULE
• The string module provides tools to manipulate strings. Some methods available in the
standard data structure are not available in the string module (e.g. isalpha).
Example:
>>>import string
>>>string.digits
‘0123456789’
>>>string.ascii_letters
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>>string.ascii_lowercase
‘abcdefghijklmnopqrstuvwxyz’
>>>string.ascii_uppercase
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>>string.hexdigits
‘0123456789abcdefABCDEF’
>>>string.octdigits
‘01234567’
>>>string.punctuation
‘!”@#$%^&*()”:><{}[]’
>>>string.whitespace
‘\t\n\r\x0b\x0c’
>>>string.Capwords(“python”)
‘PYTHON’
22
➢ A list in Python is just an ordered collection of items which can be of any type.
➢ By comparison an array is an ordered collection of items of a single type - so in
principle a list is more flexible than an array but it is this flexibility that makes things
slightly harder when you want to work with a regular structure.
➢ A list is also a dynamic mutable type and this means you can add and delete elements
from the list at any time.
➢ To define a list you simply write a comma separated list of items in square brackets,
myList=[1,2,3,4,5,6]
➢ This looks like an array because you can use "slicing" notation to pick out an individual
element - indexes start from 0.
For example print myList[2]
➢ It will display the third element, i.e. the value 3 in this case. Similarly to change the
third element you can assign directly to it:
myList[2]=100
➢ The slicing notation looks like array indexing but it is a lot more flexible.
For example myList[2:5]
➢ It is a sublist from the third element to the fifth i.e. from myList[2] to myList[4].
➢ The final element specified i.e. [5] is not included in the slice.
➢ Also notice that you can leave out either of the start and end indexes and they will be
assumed to have their maximum possible value.
For example myList[5:] is the list from List[5] to the end of the list andmyList[:5]
is the list up to and not including myList[5] andmyList[:] is the entire list.
➢ List slicing is more or less the same as string slicing except that you can modify a slice.
For example:
myList[0:2]=[0,1] has the same effect as
myList[0]=0
myList[1]=1
➢ List slicing is more or less the same as string slicing except that it can modify a slice.
➢ For example, to find the maximum value (forgetting for a moment that there is a built-
in max function) you could use:
m=0
for e in myList:
if m<e:
m=e
23
➢ This uses the for..in construct to scan through each item in the list. This is a very useful
way to access the elements of an array but it isn't the one that most programmers will be
familiar with. In most cases arrays are accessed by index and you can do this in Python:
m=0
for i in range(len(myList)):
if m<myList[i]:
m=myList[i]
➢ Notice that we are now using range to generate the sequence 0, 1, and so on up to the
length of myList.
➢ You have to admit that there is a lot to be said for the simplicity of the non-index
version of the for loop but in many cases the index of the entry is needed. There is the
option of using the index method to discover the index of an element but this has its
problems.
ILLUSTRATIVE PROGRAMS:
n = int(input("Enter a number"))
howmany = int(input("Enter another number"))
approx = 0.5 * n
for i in range(howmany):
betterapprox = 0.5 *(approx + n/approx)
approx = betterapprox
print("The square root of a number is:", betterapprox)
OUTPUT:
Enter a number25
Enter another number36
The square root of a number is: 5.0
d1 = int(input("Enter a number:"))
d2 = int(input("Enter another number"))
rem = d1 % d2
while rem != 0 :
d1 = d2
d2 = rem
rem=d1 % d2
print ("gcd of given numbers is :", d2)
OUTPUT:
Enter a number:2
Enter another number4
gcd of given numbers is : 2
24
3. Exponentiation
n = input ("Enter a number : ")
n = int(n)
e = input ("Enter an exponent : ")
e = int(e)
r=n
for i in range (1,e):
r=n*r
print(r)
OUTPUT:
Enter a number : 2
Enter an exponent : 2
4
4. Sum an array of elements.
a = []
n = int(input("Enter number of elements:"))
for i in range(1, n+1):
b = int(input("Enter element:"))
a.append(b)
a.sort()
print("Largest element is:",a[n-1])
OUTPUT:
Enter number of elements:5
Enter element:5
Enter element:54
Enter element:24
Enter element:58
Enter element:1
Largest element is: 58
5. Linear search
OUTPUT:
Enter search number 4
4 found at position 0
6. Binary search
defbinary_search(item_list,item):
first = 0
25
last = len(item_list)-1
found = False
while( first<=last and not found):
mid = (first + last)//2
ifitem_list[mid] == item :
found = True
else:
if item <item_list[mid]:
last = mid - 1
else:
first = mid + 1
return found
print(binary_search([1,2,3,5,8], 6))
print(binary_search([1,2,3,5,8], 5))
OUTPUT:
False
True
6
PART-B
1. Explain the concepts Python interpreter and interactive mode in detail.
Interpreter:
Translates program one statement at a time.
It takes less amount of time to analyze the source code but the overall
execution time is slower.
No intermediate object code is generated, hence are memory efficient.
Continues translating the program until the first error is met, in which case it
stops. Hence debugging is easy.
Programming language like Python, Ruby use interpreters.
Compiler:
Scans the entire program and translates it as a whole into machine code.
It takes large amount of time to analyze the source code but the overall
execution time is comparatively faster.
Generates intermediate object code which further requires linking, hence
requires more memory.
It generates the error message only after scanning the whole program. Hence
debugging is comparatively hard.
Programming language like C, C++ uses compilers.
7
There are two ways to use the interpreter: interactive mode and script mode.
Interactive mode:
Working in interactive mode is convenient for testing small pieces of code
because you can type and execute them immediately.
Interactive mode is a command line shell which gives immediate feedback for
each statement, while running previously fed statements in active memory.
As new lines are fed into the interpreter, the fed program is evaluated both in
part and in whole.
Interactive mode is a good way to play around and try variations on syntax.
Example:
>>> 1 + 1
Output:2
Script mode:
Store code in a file and use the interpreter to execute the contents of the file,
which is called a script.
Python scripts have names that end with .py.
To execute the script, you have to tell the interpreter the name of the file.
Save code as a script which can modify and execute it in the future.
In script mode, however, Python doesn't automatically display results.
Explicitly from the command line. In this case running Python file and
providing the name of the script as an argument.
EX:
Sample.py
a=10
b=20
print (a+b)
Output : 3
8
Program:
A computer program is a collection of instructions that performs a
specific task when executed by a computer. A computer requires programs to
function and typically executes the program's instructions in a central processing
unit. A computer program is usually written by a computer programmer in a
high-level programming language.
Elements of program:
input: Get data from the keyboard, a file, or some other device.
output: Display data on the screen or send data to a file or other device.
math: Perform basic mathematical operations like addition and
multiplication.
conditional execution: Check for certain conditions and execute the
appropriate sequence of statements.
repetition: Perform some action repeatedly, usually with some variation.
Debugging:
Programming errors are called bugs and the process of tracking them down is
called debugging.
Three kinds of errors can occur in a program: syntax errors, runtime errors,
and semantic errors.
Syntax Errors:
Python can only execute a program if the syntax is correct; otherwise, the
interpreter displays an error message.
Syntax refers to the structure of a program and the rules about that structure.
Runtime Errors:
The second type of error is a runtime error, so called because the error does
not appear until after the program has started running.
These errors are also called exceptions because they usually indicate that
something exceptional (and bad) has happened.
Runtime errors are rare in the simple programs.
Semantic errors:
The third type of error is the semantic error. If there is a semantic error in
your program, it will run successfully in the sense that the computer will not generate
any error messages, but it will not do the right thing.
Scope of Python:
9
2. Explain in detail about values and data types available in python with examples.
A Value is one of the fundamental things, like a letter or a number that a program
manipulates. They are grouped into different data types.
Data type is a set of values and allowable operations on those values. Data types
allow programming languages to organize different kinds of data.
Numbers:
A Numerical literals Containing only the digits (0-9), Optional sign character (+ or -) and a
decimal point.
Syntax:
Variable_name = initial_value
10
Where,
Variable_name is user defined name
Initial_name is the value to initialized (Integer, Floating Point, Complex, Boolean)
Integer : a = 10 Complex Integer : Z = 1+2j
Floating Point : b = 5.6 Boolean Value : Flag = True / False
1.Integers:
Integers are whole Numbers with no Fractional parts and Decimal Point. They can
have Positive, Negative or zero Values.
Data Type Example
Integer type -55,-45,-28,-2,0,5,19,56
2.Floating Point:
Numbers with fractions or decimal points are called floating point numbers. A
floating point number will consists of signs (+,-) sequence of decimal digits.
A Boolean variable can take only two values True (1) and False (0)
Sequence:
A sequence is an ordered collection of items, indexed by positive integers. It is a
combination of mutable and non mutable data types.
The types of sequence data types are
String
lists
1.Strings:
Strings are literal or it is a sequence of characters which may consists of letters,
number, special symbols or a combination of these types represented within the pair
of double or single quotation marks.
Creating string is as Simple as assigning a value to a variable.
>>> a = “Hello”
>>>type(a)
<type „str‟>
Operations on Strings:
1. + Operator
2. * Operator
Output: AAAAA
2. Lists:
Lists in Python are used to store a list of values.
It is an ordered sequence of values which may consists of any type of data
( Intger, Float,String etc)
Values in the list are called element/items.
They are Mutable and indexed ordered.
To create a list, we define a variable to contain an ordered series of items separated by a
comma. A square bracket is used to enclose the items.
Syntax:
To create an empty list : My_list=[ ]
To create a list of items : My_list=[ item1, item2,item3….]
Example:
#List with Integer
Num_list=[ 0,5,4,7,8]
#List with String
String_list=[ „cat‟, „rat‟, „dog‟, „lion‟]
3. Define variable. Explain how to declare variable and explain about the scope of
variable.
A variable is basically a name that represent some value, Variable are reserved
memory location to store values.
Every value in Python has a datatype.Diffferent data types in python are Number,
List, Tuple, Strings etc.
A variable name can contain both Upper case (A-Z) and Lower case characters(a-z)
and Underscore character ( _ ).
Numbers are allowed, but they should not be used at the beginning of the variable
name. Eg: 1firstname is not valid, firstname1 is valid.
No Special symbol other than underscore is allowed.
There are some Keywords that cannot be used as a variable name because they
already have pre-assigned meaning , some of the reserved word are
Print,Input,if,while etc
13
The declaration happens automatically while assigning values to a variable. The equal sign
(=) is used to assign values to variables.
Output:
Welcome
If we type an expression on the command line, the interpreter evaluates it and displays the
results.
14
>>>2+2
The evaluation of an expression produces a value. Some legal expression are a follows:
>>> a= 15
>>> a
Output: 15
>>> a + 15
Output: 30
When we type an expression at the prompt, the interpreter evaluates it, which means that it
finds the value of the expression. In the above example “ a” has a value 15 and “a+15” has
a value 15.
>>>Line
x=2
print x
output:
1
2
The assignment statement produces no output.
Example: To swap a, b
Temp=a
a=b
b=temp
Tuple assignment solves this problem neatly
(a,b)=(b,a)
The number of variables on the left and the number of values on the right have to be
the same:
>>> a, b = 1, 2, 3
7. What are the types of operators supported by python language? List the
operators and explain them.
Operator:
An operator is a special symbol that represents a simple computation like
addition, subtraction,…
The values (or) the variables are applied on the operator is called as operands.
Types of Operator:
Python language supports the following types of operators.
Arithmetic Operators
Comparison (Relational) Operators
Assignment Operators
16
Logical Operators
Bitwise Operators
Membership Operators
Identity Operators
- Subtraction Subtracts right hand operand from left hand operand. a – b = -10
% Modulus Divides left hand operand by right hand operand and returns b%a=0
remainder
// Floor Division – that divides two numbers and chops off the 9//2 = 4
fraction part.
== If the values of two operands are equal, then the condition becomes (a == b)
true.
False(0)
!= If values of two operands are not equal, then condition becomes true.
> If the value of left operand is greater than the value of right operand, (a > b) is
then condition becomes true. not true.
< If the value of left operand is less than the value of right operand, (a < b) is
then condition becomes true. true.
>= If the value of left operand is greater than or equal to the value of (a >= b) is
right operand, then condition becomes true. not true.
<= If the value of left operand is less than or equal to the value of right (a <= b) is
operand, then condition becomes true. true
= Assigns values from right side operands to left side operand c=a+b
assigns value
of a + b into
c
18
+= Add AND It adds right operand to the left operand and assign the result c += a is
to left operand equivalent to
c=c+a
-= Subtract It subtracts right operand from the left operand and assign the c - = a is
AND result to left operand equivalent to
c=c-a
*= Multiply It multiplies right operand with the left operand and assign c * = a is
AND the result to left operand equivalent to
c=c*a
/= Divide AND It divides left operand with the right operand and assign the c / = a is
result to left operand equivalent to
c = c / ac /= a
is equivalent
to c = c / a
%= Modulus It takes modulus using two operands and assign the result to c %= a is
AND left operand equivalent to
c=c%a
//= Floor It performs floor division on operators and assign value to the c //= a is
Division left operand equivalent to
c = c // a
19
a = 0011 1100
b = 0000 1101
-----------------
& Binary AND Operator copies a bit to the result if it exists in both (a & b) (means
operands 0000 1100)
^ Binary XOR It copies the bit if it is set in one operand but not both. (a ^ b) = 49
(means 0011
0001)
<< Binary Left Shift The left operands value is moved left by the number of bits a << 2 = 240
specified by the right operand. (means 1111
0000)
>> Binary Right The left operands value is moved right by the number of a >> 2 = 15
Shift bits specified by the right operand. (means 0000
1111)
20
Description Example
is not Evaluates to false if the variables on either side of the x is not y, here is not results
operator point to the same object and true otherwise. in 1 if id(x) is not equal to
id(y).
The list below will show which operator has more precedence over the operators.
The first operator in the list will run before the second operator below.
OPERATORS MEANING
() Parentheses
** Exponent
+,- Addition,subtraction
^ Bitwise XOR
| Bitwise OR
==,!=,>,>=,<,<=,is, is not,in
Comparisons ,Identity, Membership operators
not, not in
21
or Logical OR
Python will run the equation from left to right since multiplication and division has
same precedence.
Example:
Multiplication will run before an addition equation since multiplication has more
precedence over addition.
Example:
#Multiplication and addition
>>>2=4*4
18
Addition and subtraction:
The equation will run left to right since addition and subtraction are on the same
level.
Example:
#Addition and subtraction
>>>2=3-5+8-4+2-9
-3
EXAMPLE PROBLEMS:
1. X=(15=6)-10*4
Print (x)
In the expression to evaluate the value of x, the brackets have highest of all
precedence.
So this is evaluated before anything else, then * is done and lastly the subtraction.
15+6 is 21
1084 is 40
21-40 is -19
Ans: -19
2. X=17/2%2*3**3
Print(x)
In the expression to evaluate the value of x, the exponentiation is done first and then
division operator followed by modulo and multiplication.
3**3 is 27
17/2 is 8.5
8.5%2 is 0.5
0.5*27 is 13.5
Ans: 13.5
23
Comments statements are used to provide a summary of the code in plain English to
help future developer for better understand of the code.
There are two types of comments
Single line comment.
Multiline comment.
Single Line comment:
A single line comment starts with the number sign (#) character:
Example:
# compute the percentage of the hour that has elapsed
percentage = (minute * 100) / 60
In this case, the comment appears on a line by itself. You can also put comments at the end
of a line:
percentage = (minute * 100) / 60 # percentage of an hour.
Multiline comment:
Multiple lines can be created by repeating the number sign several times:
#This is a comment
#second line
X=4
A file containing Python code, for e.g.: example.py is called a module and its
module name would be example.
We use modules to break down large programs into small manageable and organized
files. Furthermore, modules provide reusability of code.
24
We can define our most used functions in a module and import it, instead of copying
their definitions into different programs.
Let us create a module. Type the following and save it as example.py
Here, we have defined a function add ( ) inside a module named example. The function
takes in two numbers and returns their sum.
We can import the definitions inside a module to another module or the interactive
interpreter in Python.
We use the import keyword to do this. To import our previously defined
module example we type the following in the Python prompt.
This does not enter the names of the functions defined in example directly in the
current symbol table. It only enters the module name example there.
Using the module name we can access the function using dot (.) operation. For
example:
>>> example.add(4,5.5)
9.
Python import statement:
We can import a module using import statement and access the definitions inside it using
the dot operator as described above. Here is an example.
# Import statement example
# To import standard module math
import math
print("The value of pi is", math.pi)
We can import specific names form a module without importing the module as a whole.
Here is an example.
It is also possible to import all names from a module into the current namespace by using
the following import statement.
This provides an easy way to import all the items from a module into the current
namespace.
A function is a block of organized, reusable code that is used to perform a single, related
action. Functions provide better modularity for your application and a high degree of code
reusing.
Types of Functions:
Types of
Functions
Function calls
A function is a named sequence of statements that performs a computation.
When you define a function, you specify the name and the sequence of statements.
Later,you can “call” the function by name. We have already seen one example of a
function call:
>>> type(32)
<type 'int'>
The int function takes any value and converts it to an integer, if it can, or complains
otherwise:
>>> int('32')
32
>>> int('Hello')
ValueError: invalid literal for int(): Hello
The int can convert floating-point values to integers, but it doesn’t round off; it chops
off the fraction part:
>>> int(3.99999)
3
>>> int(-2.3)
-2
Float converts integers and strings to floating-point numbers:
>>> float(32)
32.0
>>> float('3.14159')
3.14159
>>> str(32)
27
'32'
>>> str(3.14159)
'3.14159'
Math functions
Python has a math module that provides most of the familiar mathematical functions.
A module is a file that contains a collection of related functions.
This statement creates a module object named math. If you print the module object,
you get some information about it:
The module object contains the functions and variables defined in the module.
To access one of the functions, you have to specify the name of the module and the
name of the function, separated by a dot (also known as a period). This format is
called dot notation.
Example:
>>> ratio = signal_power / noise_power
>>> decibels = 10 * math.log10(ratio)
The orders in which statements are executed are called flow of execution.
Execution always begins at the first statement of the program. Statements are
executed one at a time, in order from top to bottom.
Function definitions do not alter the flow of execution of the program, but remember
that statements, inside the function are not executed until the function is called.
A function call is like a detour in the flow of execution.
Instead of going to the next statement, the flow jumps to the body of the function,
executes all the statements there, and then comes back to pick up where it left off.
28
That sounds simple enough, until you remember that one function can call another.
While in the middle of one function, the program might have to execute the
statements in another function.
Example:
1. Def pow(5,2)
2. Y=b**p
3. Return y
4.
5. def square(x)
6. a=pow(x,2)
7. return a
8.
9. X=5
10. Result=square(x)
11. Print(result)
Output:
25
13. Explain the concept of parameters and arguments
The arguments are assigned to variables called parameters.
EXAMPLE:
def print_twice(Flower):
Print flower
Print flower
This function assigns the argument to a parameter named flower.
When the function is called, it prints the value of the parameter twice.
EXAMPLE:
>>>print_twice(„world‟)
World
World
>>>print_twice(56)
56
56
>>>print_twice(math.pi)
29
3.14
3.14
The same rule of composition that apply to built in functions also apply to user
defined functions, so we can use any kind of expression as an argument for
print_twice:
>>>print_twice(„spam‟*4)
Spam spam spam spam
Spam spam spam spam
>>>print_twice(math.cos(math.pi))
-1.0
-1.0
The argument is evaluated before the function is called,so in the example the
expression „spam‟*4 and math.cos (math.pi)are only evaluated once.
The variable can also be used as an argument:
EXAMPLE:
>>>book=‟python‟
>>>print_twice(book)
Python
python
UNIT-V
FILES, MODULES, PACKAGES
PART-A
1. What is file? List out its types.
Example:
f = open(“text.txt”) #open file in current directory
f = open (“text.txt”, ‘w’) #write in text mode
f = open(“text.txt”, ‘r+b’) # read in binary mode
1. Syntax errors.
2. Runtime errors.
3. Logical errors.
Standard Exceptions:
1. Floating Point Error-Raised when floating point calculation fails.
2. Import error-Raised when an import statement fails.
3. Syntax error-Raised when there is an error in python syntax.
4. Indentation error-Raised when indentation is not specified properly
Example:
def get_age():
age = int(input("Please enter your age: "))
if age < 0:
my_error = ValueError("{0} is not a valid age".format(age))
raise my_error
return age
Output:
raise ValueError("{0} is not a valid age".format(age))
Module Package
1. A module is a single file that are 1. A package is a collection of modules
imported under one import. in directories that give a package
hierarchy.
2. Example: 2. Example:
import my_module from pots import pots
PART-B
1. Discuss with suitable example (i) Read a File (ii) Write a file (iii) Close a file
(or)
Explain the file concepts in detail with example.
FILES
FILES refer to a location with Filename that stores information. Like a book a File must be opened to
read or Write. Moreover it must be closed after read/write operations to avoid data damages.
Almost all the information Stored in a computer must be in a file.
A File is a named location on disk to store related information.
OPENING A FILE:
Syntax:
File_VariableName=Open (“Filename”, ‘mode’)
Where
“File_VariableName” is the variable to add the file object.
“Mode” tells the interpreter and developer which way the file will be used.
Example:
f = open(“text.txt”) #open file in current directory
f = open (“text.txt”, ‘w’) #write in text mode
f = open(“text.txt”, ‘r+b’) # read in binary mode
Write ( ) Method:
This method writes any string to an open file.
Syntax:
File_Variablename.Write(string);
Example
#open a file
f = open(“sample.txt”, ‘w’)
f.write(“ God is Great.\n God is always with me!\n”);
#close the opened file
f.close( )
In the above example the methods would create sample.txt file and would write the given content in that file,
finally it would close that file. (\n) adds a newline character.
Sample.txt
God is Great
God is always with me!
Read ( ) Method:
This Method read a string from a file. It is important to note that Python strings can have binary data
apart from text data.
Syntax
File_variablename.read(count);
Example:
#opens a file
f = open (“sample.txt”, “r+”)
str=f.read(10);
print(“Read the string:”,str)
f.close()
Output: Read the string: God is great.
3. Illustrate about the concept of errors and exception. Explain the types of error.
4. Syntax errors.
5. Runtime errors.
6. Logical errors.
SYNTAX ERRORS:
Python can only execute a program, if the syntax is correct, otherwise interpreter displays error
message.
Python will find these kinds of error when it tries to parse a program and exit with an error message
without running anything.
Syntax errors are mistakes in the use of the python language or grammar mistakes.
RUNTIME ERROR:
The second type of error is a runtime error. It does not appear until after the program has started
running.
The program may exit unexpectedly during execution.
Runtime error was not detected when the program was parsed.
Division by zero.
Ex:
>>> print(55/0)
ZeroDivisionError: integer division or modulo by zero.
Trying to access a file which doesn’t exist.
Accessing a list element or dictionary values which doesn’t exist.
Ex:
>>> a = []
>>> print(a[5])
IndexError: list index out of range
Using an identifier which has not be defined.
LOGICAL ERRORS:
Standard Exceptions:
1. Floating Point Error-Raised when floating point calculation fails.
2. Import error-Raised when an import statement fails.
3. Syntax error-Raised when there is an error in python syntax.
4. Indentation error-Raised when indentation is not specified properly.
5. EOF error-Raised when there is no input until the end of while.
6. IOError- open()function when trying to open a file that does not exist.
7. ArithmeticError-Base class for all errors that occur for numeric calculation.
8. AssertionError-Raised in case of failure of the assert statement.
9. RuntimeError-Raised when a generated error does not fall into any category.
10. ValueError-Raised when the built in functions for a data type has the valid type of arguments,but the
have invalid values specified.
Syntax:
Try:
Operator
……
Except exception:
If there is exception, execute this block.
Except Exception
If there is exception, execute this block.
…..
else
If there is no exception, then execute this block.
Example:
It tries to open a file where do not have write permission, so it raises exception.
Try:
fh=open(“testfile”,’r’)
fh.write(“This is my test file for exception handling!”)
Except IOerror
Print(“error:can’t find file or read data”)
else:
Print(“written content in the file successfully”)
Output:
Error: can’t find file or read data.
Raising An Exceptions:
We can raise exceptions in several ways by using the raise statement.
Syntax:
Raise(Exception(,args(,traceback)))
Example:
def get_age():
age = int(input("Please enter your age: "))
if age < 0:
Output:
raise ValueError("{0} is not a valid age".format(age))
We can import the definitions inside a module to another module or the interactive interpreter in
Python.
>>> import example
Using the module name we can access the function using dot (.) operation.
For example:
>>> example.add(4,5.5)
We can import a module using import statement and access the definitions inside it using the dot
operator.
# Import statement example
import math
print("The value of pi is", math.pi)
OUTPUT:
The value of pi is 3.14
Import specific names form a module without importing the module as a whole. Here is
an example.
It is also possible to import all names from a module into the current namespace by using
the following import statement.
This provides an easy way to import all the items from a module into the current namespace.
The package gives the hierarchical file director structure of the python application environment
that consists of modules and package.
If the project team has decided to maintain all the modules in “MyProject” directory, a folder in
the name of “MyProject” is creacted and the file __init__.py is placed in that folder.
Syntax:
Import<packageName>.{<subpackageName>.}ModuleName>
Example:
Import MyProject.subproject1.prog1_1
MyProject.subProject1.Prog1_1.start()