Vous êtes sur la page 1sur 106

BASICS OF PYTHON PROGRAMMING

Introduction
In order to tell the computer ‘what is to be done’, a computer program is written in HLL (High Level
Language) such as BASIC, Pascal, C, C++, Java, Haskell, Ruby, Python etcetera. Python will be studied in this
course enforced by the CBSE.

History
Python was created by Guido Van Rossum when he was working at CWI (Centrum Wiskunde &
Informatica) which is a National Research Institute for Mathematics and Computer Science in Netherlands.
The language was released in I991. Python got its name from a BBC comedy series from seventies- “Monty
Python's Flying Circus”. Python can be used to follow both Procedural approach and Object Oriented
approach of programming. It is open source and free to use.

Some Popular Features


It is a general purpose programming language which can be used for both scientific and non-scientific
programming.
 It is a platform independent programming language.
 It is a very simple high level language with vast library of add-on modules.
 It is excellent for beginners as the language is interpreted, hence gives immediate results.
 It is easy to learn and use. Programs in Python are easily readable and understandable.
 It is suitable as an extension language for customizable applications.

First Step with Python


Let’s start Python by understanding through a Python program. A computer program is a sequence of
instructions that specifies how to perform a computation. The computation might be mathematical or
working with text. To write and run Python program, one needs to have Python interpreter installed on a
computer. IDLE (GUI integrated) is the standard and most popular Integrated DeveLopment Environment.
It allows us to write, edit, run, browse and debug Python Programs from a single interface. The version 3.7
of Python IDLE will be used to develop and run Python code. It can be downloaded from www.python.org.
Python shell can be used in two ways- interactive mode and script mode. The Interactive Mode allows
interacting with OS; whereas, Script Mode allows creating and editing python source file. Now, first start
with Interactive Mode. Here, one types a Python statement and the interpreter displays the result(s)
immediately.

Interactive Mode
On starting Python IDLE on a computer, the following window appears:

What one see is a welcome message of Python interpreter with revision details and the Python prompt,

pg. 1
i.e., ">>>". This is a primary prompt indicating that the interpreter is expecting a python command. There is
secondary prompt also which is "…" indicating that interpreter is waiting for additional input to complete
the current statement. Interpreter uses prompt to indicate that it is ready for instruction. Therefore, we
can say, if there is prompt on screen, it means IDLE is working in interactive mode. We type Python
expression|statement|command after the prompt and Python immediately responds with the output of it.
Let’s start with typing print("How are you?") after the prompt.
>>>print("How are you?")
How are you?
The last line is Python’s response.

A simple "Hello, World!" program


The classic first program is "Hello, World!" Let’s adhere to tradition. Type in the following and press enter:

Congratulations!! You have written your first program in Python.


One may try the following and check the response:
i) print 5+7 ii) 5+7 iii) 6*250/9 iv) print 5-7
It is also possible to get a sequence of instructions executed through interpreter.
Example1 Example2
>>> x=2 >>> a=3
>>> y=6 >>> a+1, a-1
>>> z = x+y (4,2) #result is tuple of 2 values
>>> print z
8
Some Tips while writing in Python
 Python is case sensitive. That means x & X are different in Python.
 If we want to repeat prior command in interactive window, one can use ' ' key to scroll backward
through commands history and ' ' key to scroll forward. Use Enter key to select it. Using these keys,
your prior commands will be recalled and displayed, and we may edit or rerun them also.
 ^D (Ctrl+D) or quit () is used to leave the interpreter.
 ^F6 will restart the shell.
 ^N is used to open start new program file and ^O to open existing program file.
 Ctrl + Shift + S to save the program 1st time and ^S to save the Python program 2nd time onward.
 ^F5 is used to run the Python program.
 Help of IDLE can be explored to know about the various menu options available for programmer.
 Type credits() after the prompt and what we get is information about the organization involved in
python development. Similarly, copyright() and licenses() command can be used to know more about
python. Help command provides help on python. It can be used as….. help() with nothing in

pg. 2
parenthesis will allow us to enter an interactive help mode. And with a name (predefined) in bracket
will give us details of the referred word.
 To leave the help mode and return back to interactive mode, quit command can be used.
 Script Mode
In script mode, the Python program is written in a file and then interpreter is used to execute the content
from the file. Working in interactive mode is convenient for beginners and for testing small pieces of code,
as one can test them immediately. But for coding more than few lines, one should always save code so that
one may modify and reuse the code. Result produced by Interpreter in both the modes- interactive and
script mode is exactly same.

Process of Writing (i.e. Creating) a Python Program (i.e. Python Script) and Running it
To create and run a Python script, we will use following steps in IDLE, if the script mode is not made
available by default with IDLE environment.
1. File>Open OR File>New Window (for creating a new script file)
2. Write the Python code as script
3. Save as (ctrl+shift+S) first time and ^S second time onward
4. Execute it by using RUN option (F5).
[Note: For every updation of script file, we need to repeat step 3 & step 4]

If we write Example1 (given above) in script mode, it will be written in the following way:
Step 1: File> New Window
Step 2:
x=2
y=6
z = x+y
print z
Step 3:
Use File > Save or File > Save As - option for saving the file. Suppose, it saved as “myfirstprog.py”
(By convention all Python program files have names which end with .py)
Step 4:
For execution, press ^F5, and we will go to Python prompt in other window.
>>> myfirstprog.py # this is not required to be typed. It will appear automatically
8
Alternatively we can execute the script directly by choosing the RUN option.
Note: While working in script mode, we add ‘print’ statement in our program to see the results which
otherwise were displayed on screen in interactive mode without typing such statements.

Notion of Variables and Associated Data Types


When we create a program, we often like to store values so that it can be used later. We use variable to
capture and store data, which then can be manipulated to provide information. Thus, the variable may be
referred to as "envelop" or "bucket" where value can be maintained and referenced.
By now we know that variable is a name which refers to a value. Every variable has:
i) An Identity, - can be known using id (variable).
ii) A type – can be checked using type (variable).
iii) A value.
Let us study all these in detail

pg. 3
i) Identity of the variable: It is the variable's address in memory and does not change once it has been
created.
ii) (Data) Type of Variable: It is a set of values, and the allowable operations on those values. It can be
one of the following as per CBSE syllabus:
a. integer b. float c. string d. list e. tuple f. dictionary
Currently, we will pay attention to integer, float and string data types only. List, tuple and dictionary will be
introduced and will be discussed later in this chapter.
Integer
Integers are the whole numbers consisting of + or – sign with decimal digits like 100000, -99, 0, 17. While
writing a large integer value, don’t use commas to separate digits. Also integers should not have leading
zeros.
When we are working with integers, we need not to worry about the size of integer as a very big integer
value is automatically handled by Python. When we want a value to be treated as very long integer value,
append L to the value. Such values are treated as long integers by python.
>>> a = 10
>>> b = 5192L #example of supplying a very long value to a variable
>>> c= 4298114
>>> type(c) # type ( ) is used to check data type of value
<type 'int'>
>>> c = c * 5669
>>> type(c)
<type 'long'>

Note: We can know the largest integer in our version of Python by following the given set of commands:
>>> import sys
>>> print sys.maxint

Floating Point
Numbers with fractions or decimal point are called floating point numbers. A floating point number will
consist of sign (+,-) sequence of decimals digits and a dot such as 0.0, -21.9, 0.98333328, 15.2963. These
numbers can also be used to represent a number in engineering|scientific notation. -2.0X 105 will be
represented as -2.0e5. 2.0X10-5 will be 2.0E-5.
Example
y= 12.36
Note: A value when stored as floating point in Python will have 53 bits of precision.

String
The string is an ordered sequence of letters/characters. They are enclosed in single quotes (' ') or double
(" " ). The quotes are not part of string. They only tell the computer where the string constant begins and
ends. They can have any character or sign, including space in them. These are immutable data types. We
will learn about immutable data types while dealing with third aspect of object i.e. value of object.
Example
>>> a = 'Ram'
A string with length 1 represents a character in Python.

Conversion from one type to another


If we are not sure, what is the data type of a value, Python interpreter can tell us:
>>> type ('Good Morning')
pg. 4
<type 'str'>
>>> type ('3.2')
<type 'str'>
It is possible to change one type of value|variable to another type. It is known as type conversion or type
casting. The conversion can be done explicitly (programmer specifies the conversions) or implicitly
(Interpreter automatically converts the data type). For explicit type casting, we use functions (constructors)
such as int(), float() and str().
Example No. 1 (float to int) Example No. 2 (int to float)
>>> a= 12.34 >>>a=25
>>> b= int(a) >>>y=float(a)
>>> print(b) >>>print(y)
12 25.0

Lists (mutable):
List is also a sequence (i.e. an ordered collection of items, indexed by positive integers) of values of any
type. Values in the list are called elements|items. These are mutable and indexed|ordered. List is enclosed
in square brackets.
Example- l = [‘spam’, 20.5, 5]

Tuples (immutable)
Tuples are a sequence of values of any type, and are indexed by integers. They are immutable. Tuples are
enclosed in (). We have already seen a tuple. Example- (4, 2).

Dictionaries:
Dictionary can store any number of python objects. What they store is a key–value pairs, which are
accessed using key. Dictionary is enclosed in curly brackets.
Example- d = {1:'a', 2:'b', 3:'c'}
iii) Value of Object: In order to bind value to a variable, we use assignment operator (=). This is also
known as building of a variable. Example-
>>> pi = 3.1429
Here, value on RHS of '=' is assigned to newly created 'pi' variable.

Mutable and Immutable Variables


A mutable variable is the one whose value may change in place without changing its identity. Variables of
built-in types like (list, set, dict) are mutable.
An immutable variable is the one whose value will not change in place. Variables of built-in types like (int,
float, bool, str, tuple, unicode) are immutable. Modifying an immutable variable will rebuild the same
variable as shown below:
Example-
>>>x=5
The variable x is being initiated; it is being assigned a unique object id (i.e. the location value or the lvalue).
Its type is defined at runtime and once set can never change as int is immutable). The created value 5 (i.e.
the content or the rvalue) is referenced by x.
x 5
>>>y=x
This statement will make y refer to 5 of x
x
5
y
pg. 5
>>> x=x+y
As x being integer (immutable type), so it is being rebuild. In the statement, expression on RHS will result
into value 10 and when this is assigned to LHS (x), x will rebuild to 10. So now
x 10 and
y 5

Mutable vs. Immutable


Python handles mutable and immutable variables differently.
Mutable Immutable
i) Mutable are slower to access. Immutable are quicker to access.
ii) Mutable variables are expensive to "change", Immutable variables are cheaper to "change",
because doing so involves creating a copy. because doing so does not involve creating a copy.

Rules for Naming Variables


A variable name:
1) Can be of any size.
2) Allows characters, which are a-z, A-Z, 0-9 and underscore (_).
3) Should begin with an alphabet or underscore.
4) Should not be a keyword.

It is a good practice to follow these Variable Naming Conventions:


1. Variable name should be meaningful and short.
2. Generally, they are written in lower case letters.
3. If a variable is made out of more than one word then- begin with lowercase and then first character of
the next word should be written in uppercase.

Keywords
They are the words used by Python interpreter to recognize the structure of program. As these words have
specific meaning for interpreter, they cannot be used for any other purpose.

A partial list of keywords in Python 3.7 is


and del from not
while as elif global
or with assert else
if pass yield break
except import print class
exec in raise continue
finally is return def
for lambda try

Remember:
 Variables are created when they are first assigned a value.
 Variables must be assigned a value before using them in expression,
 Variables refer to an object and are never declared ahead of time.

Operators and Operands


Operators are special symbols which represents computation. They are applied on operand(s), which can
be values or variables. Same operator can behave differently on different data types. Operators when
applied on operands form an expression. Operators are categorized as Arithmetic, Relational, Logical and
pg. 6
Assignment. Value and variables when used with operator are known as operands. Following is the partial
list of operators:
Mathematical/Arithmetic Operators
Symbol Description Example 1 Example 2
+ Addition >>>55+45 >>> 'Good' + 'Morning'
100 GoodMorning
- Subtraction >>>55-45 >>>30-80
10 -50
* Multiplication >>>55*45 >>> 'Good'* 3
2475 GoodGoodGood
/ Division >>>17/5 >>>28/3
3 9
>>>17/5.0
3.4
>>> 17.0/5
3.4
% Remainder|Modulo >>>17%5 >>> 24%2.5
2 1.5
** Exponentiation >>>2**3 >>>2**8
8 256
>>>16**0.5
4.0
// Integer Division >>>7.0//2 >>>3// 2
3.0 1
Note: Division is Implementation Dependent

Relational Operators
Symbol Description Example 1 Example 2
< Less than >>>7<10 >>> 'Hello' < 'Goodbye'
True False
>>> 7<5 >>>'Goodbye'< 'Hello'
False True
>>> 7<10<15
True
>>>7<10 and 10<15
True
> Greater than >>>7>5 >>> 'Hello' > 'Goodbye'
True True
>>>10<10 >>>'Goodbye'> 'Hello'
False False
<= less than equal to >>> 2<=5 >>> 'Hello '<= 'Goodbye'
True False
>>> 7<=4 >>>'Goodbye' <= 'Hello'
False True
pg. 7
>= greater than equal to >>>10>=10 >>>'Hello'>= 'Goodbye'
True True
>>>10>=12 >>>'Goodbye' >= 'Hello'
False False
! =, <> not equal to >>>10!=11 >>>'Hello'!= 'HELLO'
True True
>>>10!=10 >>> 'Hello' != 'Hello'
False False
== equal to >>>10==10 >>>'Hello' == 'Hello'
True True
>>>10==11 >>>'Hello' == 'Good Bye'
False False
Note: Two values that are of different data type will never be equal to each other.

Logical Operators
Symbol Description
not Reverses the state of operand/condition.
or If any one of the operand is true, then the condition becomes true.
and If both the operands are true, then the condition becomes true.

Assignment Operators
Assignment Operator combines the effect of arithmetic and assignment operator
Symbol Description Example Explanation
= Assigned values from right >>>x=12
side operands to left variable >>>y='greetings'
(we will 12 as initial value of x for each of the following examples)
+= added and assign back the >>>x+=2 The operand|expression|constant wr-
result to left operand itten on RHS of operator will change
the value of x to 14
-= subtracted and assign back >>>x-=2 x will become 10
the result to left operand
*= multiplied and assign back >>>x*=2 x will become 24
the result to left operand
/= divided and assign back the >>>x/=2 x will become 6
result to left operand
%= taken modulus using two >>>x%=2 x will become 0
operands and assign the
result to left operand
**= performed exponential >>>x**=2 x will become 144
(power) calculation on
operators and assign value to
the left operand

pg. 8
//= performed floor division on >>>x//=2 x will become 6
operators and assign value to
the left operand
Note:
1. Same operator may perform a different function depending on the data type of the value to which it is
applied.
2. Division operator '/' behaves the same way on integer and float values.

Expression in Python
An expression is a combination of value(s) (i.e. constant), variable and
operators. It generates a single value, which by itself is an expression. To
illustrate this, an example is given at RHS. The expression is solved by
computer and gets its value. In this example, it will be 4, and we say the
expression is evaluated.
Note: Expression values in turn can act as, Operands for Operators

We have seen many such expressions (with list of operator as example). 10+5 and 9+4+2 are two
expressions which will result into value 15. Taking another example, 5.0/4+ (6- 3.0) is an expression in
which values of different data types are used, and therefore known as mixed type expressions. When
mixed type expressions are evaluated, Python promotes the result of lower data type to higher data type,
i.e. to float in the above example. This is known as implicit type casting. So the result of above expression
will be 4.25. Expression can also contain another expression. As we have already seen in 9+4+2. When we
have an expression consisting of sub expression(s), Python evaluates it based on precedence of operator.
Higher precedence operator is worked on before lower precedence operator. Operator associativity
determines the order of evaluation when they are of same precedence, and are not grouped by
parenthesis. An operator may be Left-associative or Right-associative. In left associative, the operator
falling on left side will be evaluated first; while in Right-associative, operator falling on right will be
evaluated first. In Python '= ' and '**' are Right-associative.
Table: Precedence of Operators– [useful to find which (sub) expression should be evaluated first]
Operator Description Precedence
** Exponentiation (raise to the power) highest
+, - unary plus and minus
* , /, %, // Arithmetic operators
+, -
<, <=, >, >= Relational operators
==, !=
=, %=, /=, //= , -=, +=, *= Assignment operators
not Logical operators
and
or lowest
Using the above table, we know that 9+4 itself is an expression which evaluates to 13 and then 13+2 is
evaluated to 15 by computer. Similarly, 5.0/4 + (6-3.0) will be evaluated as 5.0/4+3.0 and then to 1.25 +
3.0, and then 4.25.
If we just type 10+, we will get an error message. This happens because 10+ is not a complete expression. A
complete expression will always have appropriate number of value (Operands) with each operator. '+'
needs two operands and we have given just one.

Python Statement (Simple and Compound statement)

pg. 9
A Python statement is a unit of code that the Python interpreter can execute. Python statement terminates
at the end of line (i.e. when new line character encounters).
Examples of simple statement Examples of Compound Statement
>>> x=5 #Example01
>>> area=x**2 #assignment statement if i<0:
>>>print x #print statement print "i is negative"
5 else:
>>>print area print "i is non-negative"
25 #Example02
>>> print x, area #to print multiple items if i>0:
5 25 print "i is positive"
else:
print "i is equal to 0"

Above at LHS, we see examples of simple statements, i.e. they do not contain a nested block. In Python,
there are compound|group statements also. They are sometimes called nested block. Statements
belonging to a block are indented (usually by 4 spaces). Leading whitespace at the beginning of line is used
to determine the indentation level of line. That means statement(s) which go together must have same
indentation level. Compound statements are given above at RHS.
While writing Python statements, keep the following points in mind:
1. Write one python statement per line (Physical Line). However, it is possible to write two statements
in a line separated by semicolon.
2. Comment starts with '#' outside a quoted string and ends at the end of a line. Comments are not part
of statement. They may occur on the line by themselves or at the end of the statement. They are not
executed by interpreter.
3. For a long statement, spanning multiple physical lines, we can use '/' at the end of physical line to
logically join it with next physical line. Use of the '/' for joining lines is not required with expression
consists of ( ), [ ], { }
4. When entering statement(s) in interactive mode, an extra blank line is treated as the end of the
indented block.
5. Indentation is used to represent the embedded statement(s) in a compound|grouped statement. All
statement(s) of a compound statement must be indented by a consistent no. of spaces (usually 4)
6. White space in the beginning of line is part of indentation, elsewhere it is not significant.

Input and Output


A Program needs to interact with the user to accomplish the desired task; this is done using Input-Output
facility. Input means the data entered by the user of the program. In python, we have raw-input() and
input() function available for Input.
raw_input() function- Syntax of raw_input() is:
raw_input ([prompt])
If prompt is present, it is displayed on the monitor after which user can provide the data from keyboard.
The function takes exactly what is typed from keyboard, convert it to string and then return it to the
variable on LHS of '='.
Example (in interactive mode)
>>>x=raw_input ('Enter your name: ')
Enter your name: ABC
x is a variable which will get the string (ABC), typed by user during the execution of program. Typing of data
for raw_input function is terminated by 'enter' key. We can use raw_input() to enter numeric data also. In
pg. 10
that case we typecast, i.e., changes the datatype using function, the string data accepted from user to
appropriate Numeric type.
Example
y=int(raw_input("Enter your roll no.: "))
Enter your roll no.: 5
will convert the accepted string i.e. 5 to integer before assigning it to 'y'.

input() function- Syntax for input() is:


Input ([prompt])
If prompt is present, it is displayed on monitor, after which the user can provide data from keyboard. Input
takes whatever is typed from the keyboard and evaluates it. As the input provided is evaluated, it expects
valid Python expression. If the input provided is not correct then either syntax error or exception is raised
by Python.
Example
x= input ("Enter data: ")
Enter data: 2+1/2.0
Will supply 2.5 to x
The input ( ) function is not so popular with Python programmers owing to:
 Exceptions are raised for non-well formed expressions.
 Sometimes well-formed expression can wreak havoc.
Note: A well-formed expression is the one which conforms to the grammar for an expression (as defined
by the standard) and to the semantic rules.

For output in Python we use print. We have already seen its usage in previous examples. Let's learn more
about it.
Print Statement
Syntax:
print expression|constant|variable
Print evaluates the expression before printing it on the monitor. Print statement outputs an entire
(complete) line and then goes to next line for subsequent output(s). To print more than one item on a
single line, comma (,) may be used.
Example
>>> print "Hello"
Hello
>>> print 5.5
5.5
>>> print 4+6
10
Try this on the computer and evaluate the output generated
>>>print 3.14159* 7**2
>>>print "I", "am" + "class XI", "student"
>>>print "I' m",
>>>print "class XI student"
>>>print "I' m", 16, "years old"
Comments
As the program gets bigger, it becomes difficult to read it, and to make out what it is doing by just looking
at it. So it is good to add notes to the code, while writing it. These notes are known as comments. In
Python, single-line comment starts with '#' symbol. Anything written after # in a line is ignored by
pg. 11
interpreter, i.e. it will not have any effect on the program. A comment can appear on a line by itself or they
can also be at the end of line.
Example
# Calculating area of a square
>>> area = side **2
or
>>>area= side**2 #calculating area of a square
For adding multi-line comment in a program, we can:
i) Place '#' in front of each line, or
ii) Use triple quoted string. They will only work as comment, when they are not being used as docstring.
(A docstring is the first thing in a class|function|module, and will be taken up in details when we
study functions in XII standard, only if CBSE syllabus permits).
The comment line "#calculating area of a rectangle" can also be written as following using triple quote:
i) """Calculating area of a rectangle"""
ii) """ Calculating area
of a rectangle"""
We should use as many useful comments as we can, to explain
 Any assumptions made
 Important details or decisions made in the program. This will make program more readable.

EXERCISE
1. Create following Variables
i) 'mystring' to contain 'hello' ii) 'myfloat' to contain '2.5'
iii) 'myint' to contain '10'
2. Write the value justification
i) 2*(3+4) ii) 2*3+4
iii) 2+3*4
3. What is the type of the following result?
i) 1+2.0+3
4. Which of the following is the valid variable name?
i) global ii) 99flag
iii) sum iv) an$wer
5. True or False
i) Character Data type values should be delimited by using the single quote.
ii) Python does not have any keywords.
iii) The += operator is used to add the right hand side value to the left hand side variable.
iv) The equal to condition is written by using the == operator
6. Which input statements are syntactically correct?
i) a = raw_input ( ) ii) a = raw_input (“enter a number”)
iii) a = raw_imput (enter your name)
7. Which print statements are syntactically correct?
i) _print "9" + "9" ii) _print int("nine")
iii) _print 9+9 iv) print 9
8. Which are correct arithmetical operations?
i) a = 1*2 ii) 2 = 1+1
pg. 12
iii) 5 + 6 = y iv) Seven = 3 * 4
9. Which are correct type conversions?
i) int (7.0+0.1) ii) str (1.2 * 3.4)
iii) float (“77”+“.0”) iv) str ( 9 / 0 )
10. Which operations result in 8?
i) 65 // 8 ii) 17 % 9
iii) 2 * * 4 iv) 64 * * 0.5
11. Which lines are commented?
i) “””This is a comment””” ii) # This is a comment
iii) // this is a comment iv) ‘’’ This is a comment’’’
12. Find the matching pairs of expressions and values.
i) 1023 str
ii) 17.54 int
iii) “my fat cat” float
13. If the value of a = 20 and b = 20, then a+=b will assign ________ to a
i) 40 ii) 30
iii) 20 iv) 10
14. The ____________ operator is used to find out if division of two number yields any remainder
i) / iii) +
iii) % iv) //
15. When will following statement in interpreter result into error:
>>> B+4
17. Is python case sensitive?
18. What does ‘immutable’ mean; which data type in python are immutable.
19. Name three of Python’s Basic data types? Why are they called so?
20. What are relational operators? Explain with the help of examples.
21. What is an integer?
22. What is a variable? What names may variable have?
23. How are keywords different from variable names?
24. Why are data types important?
25. How can you convert a string to integer and when can it be used?
26. How can text be read from the keyboard?
27. How are comments written in a program?
LAB EXERCISE
1. Record what happens when following statements are executed:
a) print n=7
b) print 5+7
c) print 5.2, “this”, 4-2, “that”, 5/2.0
2. Use IDLE to calculate:
a) 6+4*10
b) (6+4)*10
3. Type following mathematical expression and record your observations:
a) 2**500
b) 1/0

pg. 13
4. What will be the output of the following code:
a = 3 - 4 + 10
b=5*6
126
c = 7.0/8.0
print "These are the values:", a, b, c
5. Write a code to show the use of all 6 math function.
6. Write a code that prints your full name and your Birthday as separate strings.
7. Write a program that asks two people for their names; stores the names in variables called name1
and name2; says hello to both of them.
8. Calculate root of the following equation:
a) 34x2 + 68x – 510 = 0
b) 2x2 - x -3 = 0

pg. 14
CONDITIONAL CONSTRUCT
Depending upon time of the day, you wish Good Morning or Good Night to people. Similarly while writing
program(s), we almost always need the ability to check the condition and then change the course of
program. The simplest way to do so is using if statement
 if statement  if-else statement  Nested if statement  If-elif-else statement

if statement
Syntax Flow Chart
if Condition1:
sti1

stim
Where;
if : Python keyword
Condition1 : Boolean expression
Stij : jth statement in the body of if,
where j = 1 to m

From the flowchart it is clear that if the Condition1 is true, statement is executed; otherwise it is skipped.
The statement may either be a single or compound statement.
if-else statement
Syntax Flow Chart
if Condition1:
sti1

stim
else:
ste1

sten

Where;
if, else : Python keyword
Condition1 : Boolean expression
stij : jth statement in the body of if, where j = 1 to m
stek : kth statement in the body of else, where k = 1 to n

From the above flowchart, it is clear that the given Condition1 is evaluated first. If the Condition1 is true,
statements sti1 to stim are executed. If the Condition1 is false, statements ste1 to sten are executed.

pg. 15
Nested if (with or without else clause) statement
The if block (with or without else clause) may be nested in another if or else block. This is called nesting of
if (with or without else clause).
Syntax Flow Chart
if Condition1:
if Condition2:
sti21

sti2m
[else:
ste21

ste2n ]
else:
ste11

ste1k

If Condition1:
sti11

sti1k
else:
if Condition2:
sti21

sti2m
[else:
ste21

ste2n]

if-elif-else statement
Syntax Flow Chart

pg. 16
if Condition1:
sti1

stik
elif Condition2:
ste21

ste2m
else:
ste21

ste2n
A few important things to note about conditional construct
 The colon(:) is significant and required. It separates the header of the compound statement from
the body.
 The line after the colon must be indented. It is standard in Python to use four spaces for indenting.
 All lines indented the same amount after the colon will be executed whenever the CONDITION is
true.
Solved Examples on Conditional Construct
1. WAP in Python to determine whether the seller has made profit or incurred loss. Also determine how
much profit he made or loss he incurred. Cost price and selling price of an item is input by the user
#! profitLooss.py

cp= float(input("Enter cost price of item : "))


sp= float(input("Enter selling price of item : "))
result=sp-cp
if result>0:
print("Profit(Rs.) : ", result)
else:
if result<0:
print("Loss(Rs.) : ", -result)
else:
print("No profit no loss")
2. WAP in Python to check whether a triangle is valid or not, when the three angles of the triangle are
entered by the user. A triangle is valid if the sum of all the three angles is equal to 180 degrees.
#! checkTriangleValidity.py

angle1=float(input("Enter, first angle of triangle: "))


angle2=float(input("Enter, second angle of triangle: "))
angle3=float(input("Enter, third angle of triangle: "))
if angle1+angle2+angle3==180:
print("Triangle is valid")
else:
print("Triangle is not valid")
3. In a company an employee is paid as under:
If his basic salary is less than Rs. 80000, then HRA = 20% of basic salary and DA = 80% of basic salary.
If his salary is either equal to or above Rs. 80000, then HRA = Rs. 22000 and DA = 90% of basic salary.
pg. 17
If the employee's salary is input by the user write a program in Python to find his gross salary.
#! computeSalary.py
basic_salary=float(input("Enter basic salary of Employee : "))
if basic_salary<80000:
HRA=0.20*basic_salary
DA=0.80*basic_salary
else:
if basic_salary>=80000:
HRA=22000.0
DA=0.90*basic_salary
gross_salary=basic_salary+HRA+DA

print("Basic Salary is : ", basic_salary)


print("HRA: ", HRA)
print("DA: ", DA)
print("==========================")
print("Gross salary is : ", gross_salary)
4. WAP in Python to find the largest number from a given list of three numbers.
# SOLVED USING IF CONSTRUCT
a=int(input('Enter, First Number: '))
b=int(input('Enter, Second Number: '))
c=int(input('Enter, Third Number: '))
big=a
if b>big:
big=b
if c>big:
big=c
print('Biggest Number is: ', big)

# SOLVED USING if-else CONSTRUCT


a=int(input('Enter, First Number: '))
b=int(input('Enter, Second Number: '))
c=int(input('Enter, Third Number: '))
if a>b:
if a>c:
big=a
else:
big=c
else:
if b>c:
big=b
else:
big=c
print('Biggest Number is: ', big)

# SOLVED USING if CONSTRUCT and Composite Condition


a=int(input('Enter, First Number: '))
b=int(input('Enter, Second Number: '))

pg. 18
c=int(input('Enter, Third Number: '))
if a>b and a>c:
big=a
if b>c and b>a:
big=b
if c>a and c>b:
big=c
print('Biggest Number is: ', big)
5. WAP in Python to accept total marks secured by Percentage of Marks Grade
students out of 500 and display the grade he/she >=80.0 A
achieved using the criteria given at RHS: >=60.0 to 79.9 B
>=50.0 to 59.9 C
>=40.0 to 49.9 D
<40.0 E

#SOLVED USING if-else-if CONSTRUCT.


#! findGrade.py
tMarks=float(input('Enter, Total Marks Out of 500: '))
percentage=(tMarks/500)*100.0
if percentage >=80.0:
grade='A'
else:
if percentage >=60.0:
grade='B'
else:
if percentage >=50.0:
grade='C'
else:
if percentage >=40.0:
grade='D'
else:
grade='E'
print('Grade achieved : ', grade)

#SOLVED USING if-elif-else CONSTRUCT


#! findGrade1.py
tMarks=float(input('Enter, Total Marks Out of 500: '))
percentage=(tMarks/500)*100.0
if percentage >=80.0:
grade='A'
elif percentage >=60.0:
grade='B'
elif percentage >=50.0:
grade='C'
elif percentage >=40.0:
grade='D'
else:
grade='E'

pg. 19
print('Grade achieved : ', grade)

6. #WAP in Python to accept a week day number from the keyboard and display its day name in words
#! dayName.py

dNum=int(input("Enter, Week Day Number: "))


if dNum==1:
print("Monday")
elif dNum==2:
print("Tuesday")
elif dNum==3:
print("Wednesday")
elif dNum==4:
print("Thursday")
elif dNum==5:
print("Friday")
elif dNum==6:
print("Saturday")
elif dNum==7:
print("Sunday")
else:
print("Wrong Week Day Number!!!")
7. WAP in Python to find roots of a quadratic equation ax2 + bx +c =0; a>0.0
# Solution of a Quadratic eqn ax^2 + bx +c=0; a:0.0
#! rootsQE.py
a=float(input('Enter value of a: '))
b=float(input('Enter value of b: '))
c=float(input('Enter value of c: '))
d=b**2-4*a*c
if d<0:
print('Roots are complex')
elif d==0:
r1=r2=-b/(2*a)
print('Root1= ', r1, ', Root2= ', r2)
elif d>0:
d=d**0.5
r1=(-b+d)/(2*a)
r2=(-b-d)/(2*a)
print('Root1= ', r1, ', Root2= ', r2)
8. WAP in Python to find if the given four digits long year is leap year or not.
pg. 20
# Check Leap Year
#!checkLeapYear.py
y=int(input('Enter the year (4 digits long): '))
leapYear=False
if y%100==0:
if y%400==0:
leapYear=True
elif y%4==0:
leapYear=True

if leapYear==True:
print('Given Year', y, ' is Leap Year')
else:
print('Given Year', y, ' is not Leap Year')

9. WAP in Python to accept a character from the keyboard and display whether it is a digit or lower case
alphabet or uppercase alphabet.
#Check if entered character is digit or lowercase alphabet or uppercase alphabet
#!checkDigitLAlpaUAlpha
ch=input('Enter a Character (Digit or Alphabet (Lower/Upper: ')
if ch>='0' and ch<='9':
print('Entered character is a DIGIT')
elif ch>='A' and ch<='Z':
print('Entered character is a UPPERCASE ALPHABET')
elif ch>='a' and ch<='z':
print('Entered character is a LOWERCASE ALPHABET')
else:
print('Entered character is other than DIGIT and ALPHABET')
10. WAP in Python to input any choice(1-3) and compute the area of corresponding geometrical figure:
Choice Compute
1. Area of square
2. Area of rectangle
3. Area of triangle
#! Area_GeoFigure.py

print("Choice\tCompute")
print("1.\tArea of square")
print("2.\tArea of rectangle")
print("3.\tArea of triangle")
c = int(input ("Enter any Choice: "))
if(c==1):
s = float(input("Enter any side of the square:"))
a = s*s
print("Area = ",a)
elif(c==2):
l = float(input("Enter length: "))
b = float(input("Enter breadth: "))
a = l*b
pg. 21
print("Area = ",a)
elif(c==3):
x = float(input("Enter first side of triangle: "))
y = float(input("Enter second side of triangle: "))
z = float(input("Enter third side of triangle: "))
s = (x+y+z)/2
a = (s*(s-x)*(s-y)*(s-z))**0.5
print("Area=",a)
else:
print("Wrong Input")
11. # WAP in Python to accept an alphabet and display whether it is vowel or Consonant.
#!checkVowelConsonant.py

ch = input("Enter an alphabet: ")


vowel=False
consonant=False
if ch>='A' and ch<='Z':
if ch=='A' or ch=='E'or ch=='I' or ch=='O' or ch=='U':
vowel=True
else:
consonant=True
elif ch>='a' and ch<='z':
if ch=='a' or ch=='e'or ch=='i'or ch=='o'or ch=='u':
vowel=True
else:
consonant=True

if vowel==True:
print("You entered a vowel")
elif consonant==True:
print("You entered a consonant")
else:
print("You entered other than alphabet")
12. WAP in Python to accept a choice of temperature conversion as per given criteria given below. Also
display the converted
temperature value on screen upto 2 decimal places
Choice Input Value (in) Converted Value (in)
1. Celsius Fahrenheit
2. Fahrenheit Celsius
Note: C=(F-32)/1.8; Where C is Celsius and F is Fahrenheit
#! tempConversion.py
print("Choice\tInput Value (in)")
print("1.\tCelsius")
print("2.\tFahrenheit")
ch=int(input("Enter Your Choice: "))
if ch==1:
C=float(input("Enter Temperature in Celsius: "))
F=int((C*1.8 +32)*100)/100.0
pg. 22
print("Converted Temperature in Fahrenheit=", F, "deg F" )
elif ch==2:
F=float(input("Enter Temperature in Fahrenheit: "))
C=int((F-32)/1.8*100)/100.0
print("Converted temperature in Celsius=", C, "deg C" )
else:
print("Wrong Choice!!!")

13. WAP in Python to accept monthly salary and compute the expected income tax as per criteria given
below:
Annual Income (Rs) Tax (in %)
250000 0.0
250001-500000 10.0
500001-1000000 20.0
>1000000 30.0
Display Annual Salary and Income Tax

#!computeTax.py
mSal=float(input("Enter, Your Monthly Salary: "))
tax=0.0
if 12*mSal<=250000:
tax +=0.0
elif 12*mSal<=500000:
tax=0.0 + (12*mSal-250000)*0.10
elif 12*mSal<=1000000:
tax=0.0 + 25000 + (12*mSal-500000)*0.20
elif 12*mSal>1000000:
tax=0.0 + 25000 + 100000 + (12*mSal-1000000)*0.30
print("Annual Income (Rs): ", 12*mSal)
print("Total Tax= ", tax)

14. WAP in Python to calculate the monthly telephone bills as per the following rule:
Minimum Rs. 200 for first 100 calls. Plus Rs. 0.60 per call for next 50 calls. Plus Rs. 0.50 per call for
next 50 calls. Plus Rs. 0.40 per call for any call beyond 200 calls. 5% is the education cess applied on
the bill. 6% is the cleanliness cess applicable on the bill. 7% per annum is your interest gain on the
security money (Rs. 3000/-) that is to be adjusted with the bill.
#! telephoneBill.py

calls=int(input("Enter number of calls : "))


if calls<=100:
charges =200
elif calls<=150:
charges =200 +0.60*(calls-100)
elif calls<=200:
charges =200 + 0.60*50 +0.50*(calls-150)
elif calls>200:
charges=200 + 0.60*50 + 0.50*50 +0.40*(calls-200)

pg. 23
eduCess= 5.0*charges/100.0
cleanlinessCess=6.0*charges/100.0
intrestOnSecurity=7.5*3000.0/(12*100.0)
totalBill = charges + eduCess + cleanlinessCess - intrestOnSecurity

print("Electricity Charges \t", charges)


print("Education Cess \t", eduCess)
print("Cleanliness Cess \t", cleanlinessCess)
print("Interest on Security Deposit\t",-intrestOnSecurity)
print("==========================================")
print("Your bill is Rs. \t", totalBill)
15. The electric board charges according to the following criteria:
Unit Consumed Charges (Rs.) Meter Charges (Rs.)
0-100 4.0 Flat Rate 150.0 for all
101-300 6.0 consumers
301 and above 8.0
WAP in Python to calculate and display the total charges as per criteria.
#! electricityBill.py

flatCharges=150.0
units=int(input("Enter the number of units consumed : "))
if units<=100:
charges = (units*4.0) + flatCharges
else:
if units<=300:
charges = 100*4.0 + (units-100)*6.0 + flatCharges
else:
if units > 300:
charges = 100*4.0 + 200*6.0 + (units-300)*8.0 + flatCharges

print("Your Electricity Bill is(Rs.): ", charges)

16 #WAP in Python to find the median of three given values.


#! findMedian.py

a = float(input("Input first number: "))


b = float(input("Input second number: "))
c = float(input("Input third number: "))
if a > b:
if a < c:
median = a
elif b > c:
median = b
else:
median = c
else:
if a > c:
median = a
pg. 24
elif b < c:
median = b
else:
median = c

print("The median is", median)


17. WAP in Python to sort three integers in descending order using conditional statements only
#! sortDesc.py

a=int(input("Enter, First Number: "))


b=int(input("Enter, Second Number: "))
c=int(input("Enter, Third Number: "))

if a>b and a>c:


if b>c:
big1=a
big2=b
big3=c
else:
big1=a
big2=c
big3=b
elif b>c and b>a:
if c>a:
big1=b
big2=c
big3=a
else:
big1=b
big2=a
big3=c
elif c>a and c>b:
if a>b:
big1=c
big2=a
big3=b
else:
big1=c
big2=b
big3=a

print("Sorted Numbers are: ", big1, big2, big3)


18. WAP in Python to sort three integers in ascending order using conditional statements only
#! sortAsc

a=int(input("Enter, First Number: "))


b=int(input("Enter, Second Number: "))
c=int(input("Enter, Third Number: "))
pg. 25
if b>c:
t=b
b=c
c=t

if a>b:
t=a
a=b
b=t

if b>c:
t=b
b=c
c=t

print("Sorted Numbers are: ", a, b, c)


19. #WAP in Python to sort three integers in ascending order using conditional statements only.
#! sortAsc1.py

a=int(input("Enter, First Number: "))


b=int(input("Enter, Second Number: "))
c=int(input("Enter, Third Number: "))
if a<b:
low=a
else:
low=b

if c<low:
low=c

if a>b:
high=a
else:
high=b
if c>high:
high=c

print("Sorted Numbers are: ", low, a+b+c-low-high, high)


20. WAP in Python to compute the commission for the salesman. The commission is computed as
follows:
Sales Made Commission Rate
50001 onwards 25%
40001-50000 20%
30001-40000 15%
20001-30000 10%
10001-20000 5%

pg. 26
0-10000 0%

#!computeCommission.py
salesMade=float(input("Enter, the sales made (Rs.): "))
if salesMade>50000:
comm=0.25*salesMade
elif salesMade>40000:
comm=0.20*salesMade
elif salesMade>30000:
comm=0.15*salesMade
elif salesMade>20000:
comm=0.10*salesMade
elif salesMade>10000:
comm=0.05*salesMade
else:
comm=0.00*salesMade
print("Commission on Sales Made(Rs.): ", comm)
21. WAP in Python to check a triangle is equilateral, isosceles or scalene. Three sides of triangle are
provided as inputs.
Note: An equilateral triangle is a triangle in which all three sides are equal. A scalene triangle is a
triangle that has three unequal sides. An isosceles triangle is a triangle with (at least) two equal sides.

#! checkTriangleType.py
print("Input lengths of the triangle sides: ")
x = int(input("x: "))
y = int(input("y: "))
z = int(input("z: "))

if x == y == z:
print("Equilateral triangle")
elif x != y != z:
print("Scalene triangle")
else:
print("isosceles triangle")
22. WAP in Python to accept three sides (a, b, c) of a triangle and find out whether (a, b, c) forms a
Pythagorean triple.
Note: A triangle whose sides form a Pythagorean triple is called a Pythagorean triangle, and is
necessarily a right triangle.
#! pythagoreanTriple.py
a=float(input("Enter, First side: "))
b=float(input("Enter, Second side: "))
c=float(input("Enter, Third side: "))

pythagoreanTriple=False
if a**2 + b**2 == c**2:
pythagoreanTriple=True
if b**2 + c**2 == a**2:
pythagoreanTriple=True
pg. 27
if c**2 + a**2 == b**2:
pythagoreanTriple=True

if pythagoreanTriple==True:
print("a= ", a, ", b= ", b," c= ",c, " forms a Pythagorean triple")
else:
print("a= ", a, ", b= ", b," c= ",c, " does not form a Pythagorean triple")
23. WAP in Python to accept length (a, b, c) of three lines and find out whether (a, b, c) forms a triangle.
Note: If a, b, and c are the lengths of the three sides of a triangle, then all three inequalities must hold
good. i.e. a+b>c, b+c>a and c+a>b

#!checkTriangleFormation.py
a = float(input("Enter length of first line: "))
b = float(input("Enter length of second line: "))
c = float(input("Enter length of third line: "))
inequalities=0
if a+b>c:
inequalities += 1
if b+c>a:
inequalities += 1
if c+a>b:
inequalities += 1
if inequalities==3:
print("Given three lines form the triangle")
else:
print("Given three lines do not form the triangle")

24. Develop a Compound Interest Calculator application in Python as per given two tables hereunder, to
calculate total amount for given Amount, Rate of Interest and Time using (A=P(1+R/100) T ) and
Interest I=A-P.
COMPOUND INTEREST COMPUTATION CRITERIA SPECIAL INCENTIVE CRITERIA
Principal Fix Deposit Rate of Specialty being Remark
Amount (Rs) Years Interest (%)
<=100000 1 to 3 7.5 Female 0.75% Extra ROI
>3 to 5 8.5 Senior Citizen 0.75% Extra ROI
>5 to 10 9.0
100001 to 500000 1 to 3 7.25 Note: Extra ROI (Rate of interest)
>3 to 5 8.25 cannot exceed 1.25%
>5 to 10 8.75
>500000 >0 7.50
#!compoundInterestCalculator.py
p=float(input("Enter, Principal Amount (Rs.): "))
t=float(input("Enter, Number of Terms For Fix Deposit(Years): "))
specility=int(input("Enter, Your Specilty such as Female|Sr Citizen|Both(1|2|3: "))
if p<=100000:
if t<=3:
r=7.5

pg. 28
elif t<=5:
r=8.5
elif t<=10:
r=9.0
else:
print("Scheme is not available for more than 10 years!!!")
elif p<=500000:
if t<=3:
r=7.5
elif t<=5:
r=8.5
elif t<=10:
r=9.0
else:
print("Scheme is not available for more than 10 years!!!")
elif p>500000:
r=7.50
else:
print("Wrong Choice of Principlal Amount!!!")

if specility==1:
extraROI=0.75
elif specility==2:
extraROI=0.75
elif specility==3:
extraROI=1.25
else:
extraROI=0.0

effectveRI=r+extraROI
A=p*((1+extraROI/100.0)**t)
A=int((A*100))/100.0
I=A-p
I=int((I*100))/100.0
print("Accummulative Amount (Rs.): ", A)
print("Interst (Rs.): ", I)
25. A Quick Fox Transport Company wants to develop an application in Python for calculating amount
based on distance and weight of goods. The charges (Amount) to be calculated as per rates given
below:
Distance (in Km.) Weight (in Kg.) Charges/Km (in Rs.) Total Amount (in Rs)
(Only an Example)
>=800 >=500 12 9600 (if distance=800 Km)
>=100 and <500 10 8000 (if distance=800 Km)
<100 8 6400 (if distance=800 Km)
<800 >=500 11 8789 (if distance=799 Km)
<500 9 7191 (if distance=799 Km)

pg. 29
#!amountBasedOnDist_n_Weight.py
distance=float(input("Enter, distance to be covered by transporter (in Km): "))
weight=float(input("Enter, weight to be carried by transporter (in Kg): "))
if distance>=500:
if weight>=100:
charges=5
elif weight>100 and weight<=10:
charges=6
else:
charges=7
elif distance<500:
if weight>=100:
charges=8
else:
charges=5
amount=charges*distance
print("Total amount payable: ", amount)
26. Develop a Billing application in Python for Happy shopping-- A retail chain involved in sales of Ready-
made garments (e.g. Shirts, Trousers, T-shirts, Blazers, Sport Shoes etc.). The happy shopping offers
discount to its members holding Platinum, Gold and Silver card. The 10% discount is given to
Platinum card, 8% to Gold Card and 5% to Silver Card holders on sales amount. The application gets
input for ‘Item Name’, ‘Rate of Item /Unit’, ‘Number of items purchased’ and computes ‘Net Amount
Payable’.

#!happyShoppingBill
itemName=input("Enter, Item Name: ")
rateOfItem=float(input("Enter, Rate of Item/Unit: "))
noOfItems=int(input("Enter, No. of Items Purchased: "))
cardType=int(input("Enter, Card Type(Platinum|Gold|Siver as 1|2|3): "))
salesAmount=rateOfItem*noOfItems
if cardType==1:
discount=10.0
if cardType==2:
discount=8.0
if cardType==3:
discount=5.0

discountedAmount=salesAmount*discount/100.0
netPayableAmount=salesAmount-discountedAmount
print("=====H A P P Y S H O P I N G B I L L=====")
print("Item Name : ", itemName)
print("Quantity : ", noOfItems)
print("Sales Amount(Rs.) : ", salesAmount)
print("Discounted Amount(Rs.) : ", discountedAmount, " @",discount,"%")
print("Net Payable Amount(Rs.) : ", netPayableAmount)

27. The Entertainment Paradise- A theatre in Delhi wants to develop a computerized Booking System in

pg. 30
Python. The theatre offers different types of seats. The Ticket rates and payment rates are:
Seat Type Rate/Seat (Rs.) Payment Mode Discount (in %)
Stalls 625 Cash 6
Circle 750 Credit Card 8
Upper Class 850 Internet 10
Box 1000
The application gets input as Seat Type, Mode Type and Number of seats to be booked. Kindly,
produce the bill for Entertainment Paradise Theatre as net payable amount after applying
appropriate discount.
#!theatreBookingBill.py
name=input("Enter, your name: ")
seatType=int(input("Enter, seat type such as stalls|circle|upper class|box (1|2|3|4): "))
paymentMode=int(input("Enter, paymant mode such as cash|credit card|internet (10|20|30): "))
numOfSeatsBooked=int(input("Enter, number of seats to be booked: "))
if seatType==1:
seatTypeDescption='Stalls, Rs. 625/seat'
ratePerSeat=625.0
elif seatType==2:
seatTypeDescption='Circle, Rs. 750/seat'
ratePerSeat=750.0
elif seatType==3:
seatTypeDescption='Upper Class, Rs. 850/seat'
ratePerSeat=850.0
elif seatType==4:
seatTypeDescption='Box, Rs. 1000/seat'
ratePerSeat=1000.0
else:
print("Wrong Seat Type Selected!!!", ratePerSeat)

if paymentMode==10:
discountPercentage=6.0
elif paymentMode==20:
discountPercentage=8.0
elif paymentMode==30:
discountPercentage=10.0
else:
print("Wrong Payment Mode Selected!!!")

bookingAmount=numOfSeatsBooked*ratePerSeat
discountedAmount=bookingAmount*discountPercentage/100.0
netPayableAmount=bookingAmount-discountedAmount
print("")
print("=====T H E A T R E B O K I N G B I L L=====")
print("Name Who Booked Seats : ", name)
print("Seat Type Description : ", seatTypeDescption)
print("No of Seats Booked : ", numOfSeatsBooked)
print("Booking Amount(Rs.) : ", bookingAmount)
print("Discounted Amount(Rs.) : ", discountedAmount, " @",discountPercentage,"%")

pg. 31
print("=================================================")
print("Net Payable Amount(Rs.) : ", netPayableAmount)

28. The Milton Casting Company has developed an application in Python to calculate the wage of its
workers. Calculated total wage is displayed on the screen. The following functionalities are expected:
a) The Wage rate are Rs.150/- (per day) for male and Rs.130/- for females.
b) An additional amount Rs.50/- per day is paid if worker is skilled.
#! wageCalculator.py
name=input("Enter, worker name: ")
gender=int(input("Enter, gender of worker(male|female) as (1|2): "))
workerSkill=int(input("Enter, 0 if worker is unskilled or 1 if skilled: "))
noOfWorkingkDays=int(input("Enter number of working days: "))
if gender==1:
wageRate=150
genderStr='Male'
elif gender==2:
wageRate=130
genderStr='Female'
else:
print("Wrong Gender value Entered!!!")

if workerSkill==0:
additionalAmt=0
skillStr='Un-Skilled'
elif workerSkill==1:
additionalAmt=50
skillStr='Skilled'
else:
print("Wrong skill entered!!!")
effectiveRate=wageRate+additionalAmt
totalWage=noOfWorkingkDays*effectiveRate
print("")
print("*****P A Y S L I P F O R W R K E R S*****")
print("Name of Worker : ", name)
print("Gender of Worker : ", genderStr)
print("No of Working Days : ", noOfWorkingkDays)
print("Skill of Worker : ", skillStr)
print("Effective Wage Rate(Rs./day) : ", effectiveRate)
print("=============================================")
print("Total Wage (Rs.) : ", totalWage)
29. The Fashion Gallery- a leading garments shop wants to develop an application in Python to calculate
the discount amount and net amount when bill amount is provided as input. The produced bill must
be displayed on the screen. The discount is given
on the basis on payment mode:
Cash – 10.0%, Cheque – 8.0% and Credit – 5.0% of bill amount.
If Bill amount is more than 10000 then additional 5% discount is also given.
#!fashionGalleryBill.py
custName=input("Enter Customer Name: ")
pg. 32
billAmt=float(input("Enter Bill Amount (Rs.): "))
paymentMode=int(input("Enter Payment Mode(Cash|Cheque|Ctredit) as 1|2|3: "))

if paymentMode==1:
discRate=10.0
paymentModeStr='Cash (10.0% Discount)'
if paymentMode==2:
discRate=8.0
paymentModeStr='Cheque (8.0% Discount)'
if paymentMode==3:
discRate=5.0
paymentModeStr='Cheque (5.0% Discount)'

if billAmt>10000:
additionalDiscRate = 5.0
else:
additionalDiscRate = 0.0
effectiveDiscRate = discRate + additionalDiscRate
totalDisc = billAmt*effectiveDiscRate/100.0
netAmt=billAmt - totalDisc

print("")
print("*****F A S H I O N G A L L E R Y B I L L*****")
print("Name of Customer : ", custName)
print("Payment Mode : ", paymentModeStr)
print("Bill Amount (Rs.) : ", billAmt)
print("Normal Discount (Rs.) :\t ", billAmt*discRate/100.0)
print("Additional Discount (Rs.) :\t ", billAmt*additionalDiscRate/100.0)
print("Toatl Discount (Rs.) : ", totalDisc)
print("=====================================================")
print("Net Amount Payable(Rs.) : ", netAmt)

30. Seema is a junior programmer at 'Avon Shoe Factory'. She developed an application in Python using
following data:
• 3 items namely Shoes(code 101), Sandals(code 102) and Slippers(code 103) are manufactured
by the factory.
• A buyer can buy more than one item at a time.
• Each pair of shoes costs Rs. 3000.00, each pair of sandals costs Rs. 2000.00 and each pair of
slippers costs Rs. 1000.00.
• The item code and the quantity (number of pairs) will be entered by the user.
• Amount to be paid for that item will be computed.
Help Seema to write code for calculating:
i) The amount for each pair of items (i.e. Shoes, Sandals and Slippers)
ii) The total amount (sum total of all the amounts).

itemShoesQty=0
shoesCost=0
shoesAmt=0

pg. 33
itemSandalsQty=0
SandalsCost=0
SandalsAmt=0

itemSlippersQty=0
SlippersCost=0
SlippersAmt=0

itemShoes=int(input("Enter, Yes or No to purchase Shoes(1 for yes/0 for no): "))


if itemShoes==1:
itemShoesQty=int(input("Enter, Number of Shoes(in Pairs): "))
shoesCost=3000
shoesAmt=itemShoesQty*shoesCost

itemSandals=int(input("Enter, Yes or No to purchase Sandals(1 for yes/0 for no): "))


if itemSandals==1:
itemSandalsQty=int(input("Enter, Number of Sandals(in Pairs): "))
sandalsCost=2000
sandalsAmt=itemSandalsQty*sandalsCost

itemSlippers=int(input("Enter, Yes or No to purchase Slippers(1 for yes/0 for no): "))


if itemSlippers==1:
itemSlippersQty=int(input("Enter, Number of Slippers(in Pairs): "))
slippersCost=1000
slippersAmt=itemSlippersQty*slippersCost

totalAmt=shoesAmt + sandalsAmt + slippersAmt

print("")
print("*****A V O N S H O E S F A C T O R Y B I L L*****")
print("Item Name Quantity Amount(Rs.) ")
print("Shoes ", itemShoesQty, " ", shoesAmt)
print("Sandals ", itemSandalsQty, " ", sandalsAmt)
print("Slippers ", itemSlippersQty, " ", slippersAmt)
print("===========================================================")
print(" Total Amount(Rs.): ",totalAmt)
31. WAP in Python to find a) the absolute value of a given number, and b) the divisibility of integer value
m by n.
#!absValueAndDivisibility.py
print("<><><><><>MAIN MENU<><><><><>")
print("a. Check Absolute Value: ")
print("b. Check Divisibility of an Integer: ")
choice =input("Enter, Your Choice: ")
if choice=='a':
x=float(input("Enter, a Value whose Absolute Value is required: "))
if x<0:
print("Absolute Value of ", x, " is: ", -x)

pg. 34
else:
print("Absolute Value of ", x, " is: ", x)
elif choice=='b':
m=int(input("Enter, an Integer as Dividend : "))
n=int(input("Enter, an Integer as Divisor: "))
if m%n==0:
print("Given ", m, " is Divisible by ", n)
else:
print("Given ", m, " is Not Divisible by ", n)
else:
print("Enter your Choice Next Time Correctly!!!")

ITERATIVE COMPUTATION|LOOPING CONSTRUCT


One knows that computers are often used to automate the repetitive tasks. One of the advantages of using
computer to repeatedly perform an identical task is that it is done without making any mistake. Loops are
used to repeatedly execute the same code in a program. Python provides two types of looping constructs,
namely while-loop and for-loop.

Python while-loop
The while-loop is used to repeatedly execute a block of program statements. The syntax and flow chart for
while-loop are shown below:
Syntax Flow Chart

IE
while (Condition):
st1
st2
...
stm
[else: # optional part of while-loop
ste1

sten]

where;

IE : Initialized expression for loop variable


while : is a key/reserved word
Condition : Boolean expression, evaluates to True or False
sti : The ith statement within the body of the while loop, where i= 1 to m. From st1 to stm
forms a block of statements
stej The jth statement within the body of the else, where j= 1 to n. From ste1 to sten forms a
block of statements
The while loop runs as long as the Boolean expression (condition) evaluates to True and execute the
program block. The condition is checked every time at the beginning of the loop and when the expression

pg. 35
evaluates to False first time, the loop stops without executing any remaining statement(s). The following
example prints the numbers 0 to 4 as we set the condition x < 3.

x=0 Output:
while (x < 3): 0
print(x) 1
x += 1 2
One thing we should remember that a while loop tests its condition before the body of the loop (block of
program statements) is executed. If the initial test returns false, the body is not executed at all. For
example the following code never prints out anything since before executing the body of while, the
condition evaluates to false.
x = 10 Output:
while (x < 3): (No Output)
print(x)
x += 1
The following while loop is an infinite while loop, using True as the condition:
x = 10
while (True):
print(x)
x += 1

SOLVED EXAMPLES ON WHILE-LOOP CONSTRUCT


1. #Write a program to print numbers from 1 to 10.
#! print_1_to_10.py
i=1
while(i<=10):
print(i)
i=i+1
2. # WAP in Python to print the table of m (e.g. 5).
#!tableDisplay.py
i=1
m=int(input("Enter, the Value of m Whose Table Dispaly You Want: "))
while(i<=10):
print(m,"X",i," = ", m*i)
i +=1
3. # Write a program to calculate the sum of first 10 natural number.
#!sumNaturalNos.py
i=1; sum=0
while(i<=10):
sum+=i
i +=1
print("Sum of Frst 10 Natural Numbers:", sum)
4. # Display sum of even numbers from a list of numbers 1 to 25.
#!sumEvenNos.py
i=0; sumEven=0
while(i<=25):
if i%2==0:
sumEven +=i
i +=1
pg. 36
print("Sum of Even Numbers 1 to 25: ", sumEven)
5. #Write a program to find the factorial value of any number entered through the keyboard.
#! factorial.py
fact=1
n=int(input("Enter any number : "))
m=n
while(n>=1):
fact*=n
n-=1
print("Factorial of ", m, ": ", fact)
6. #Display divisors of a given integer m.
#!divisors.py
m=int(input("Enter, Value of m Whose Divisors You Want:"))
i=2
while(i<m/2):
if m%i==0:
print(i, "is a Divisor of ", m)
i +=1
else:
print("while loop is over!!!")
7. # Display prime numbers in range 1 to 50.
#! dispPrimeNos.py
print("#LIST OF PRIME NUMBERS#")
m=2
while (m<=50):
prime=True #Suppose m is a prime number
j=2
while(j<m/2):
if m%j==0:
prime=False
j+=1
if prime==True:
print(m)
#inner loop ended here
m+=1
else:
print("Outer Loop is Ended Here!!")
8. #Compute sum of the series Cos (X) = 1 – X2/2! + X4/4! – X6/6! +… …Xn/n! Where X is in
radians.
#!sumCosineSeries.py
pi=22.0/7
x=float(input("Enter value of x in degees: "))
x=x*(pi/180)
sum=1.0; sign=-1
i=2
while(i<=20):
f=1.0; j=i
while j>=1:
f *=j; j -=1
pg. 37
#inner loop ended here
sum += sign*x**i/f
i += 2; sign=-1*sign
else:
print("Outer Loop is Ended Here!!!")
print("Cos", int(x*180/pi),"=",int(sum*100000)/100000.0)
9. #Compute and Display the first 15 terms of the Fibonacci series i. e. 0 1 1 2 3 5 8 13 21 34…
#!fibonaciiSeriesTerms.py
print("#FIBINACCI SERIES#")
f=0; s=1;
print(f); print(s)
th=0; count=3
while(count<=15):
th=f+s
print(th)
f=s; s=th
count +=1
print("Loop is Ended Here!!!")
10. #From a given list of five years ( in 4-digits) find out which one is a leap year and which one is not a
leap year.
#!leapYearList.py

countLeapYear=1
while(countLeapYear<=5):
y=int(input('Enter the year (4 digits long): '))
leapYear=False
if y%100==0:
if y%400==0:
leapYear=True
elif y%4==0:
leapYear=True
if leapYear==True:
print('Given Year', y, ' is a Leap Year')
else:
print('Given Year', y, ' is not a Leap Year')
countLeapYear += 1
else:
print("-------------while loop ended here!!!----------------")
11. #From a given list of m distinct positive integers, find out the largest & smallest integer.
#!big_n_small_fromList.py
m=int(input("Enter, an positive integer: "))
big=short=m
count=2
while(count<=5):
m=int(input("Enter, an positive integer: "))
if m>big:
big=m
elif m<short:
short=m
pg. 38
count += 1
else:
print("while loop is ended here!!!")
print("Largest=", big, ", and Smallest=", short)
12. #From a given list of m integers, find out the sum and count of non-negative integers
#!sum_n_count_negInt.py
sum=count_negInt=0
i=1
m=int(input("Enter, number of integers in a list : "))
while(i<=m):
n=int(input("Enter, an integer(- or +): "))
if n>=0:
sum +=n
count_negInt += 1
i +=1
else:
print("while loop is ended here!!!")
print("Sum of Positive Integers=", sum, ", and Number of Positive Integers=", count_negInt)

Nested while loop


Block of statement belonging to while can have another while statement, i.e. a while can contain another
while. Example-
will result into
1
12
123

Python for-loop
Python for-loop is used to iterate over the items of any sequence including the Python list, string, tuple etc.
The for-loop is also used to access elements from a container (for example list, string, tuple) using built-in
function range().The syntax and flow chart for for-loop are shown below:
Syntax Flow Chart

pg. 39
for loop-variable in item-list:
statement block1
[else: # optional block
statement block2]

Example
# Write a for-loop to print value 1 to 10
for i in range (1, 11, 1):
print (i, end= " ")
Execution of the loop will result into
1 2 3 4 5 6 7 8 9 10

Let's understand the flow of execution of the statement:


The statement introduces a function range ( ), its syntax is
range(start, stop, [step]) # step is optional
range( ) generates a list of values starting from start till stop-
1. Step, if given is added to the value generated, to get next
value in the list.

Let's move back to the for-loop: i is the variable, which keeps on getting a value generated by range()
function, and the block of statement(s) are worked on for each value of i. As the last value is assigned to i,
the loop block is executed last time and control is returned to next statement. If, else is specified in for
statement, then next statement executed will be else. Now we can easily understand the result of for
statement. range( ) generates a list from 1, 2, 3, 4, 5, …., 10 as the step mentioned is 1, i keeps on getting a
value at a time, which is then printed on screen.
Example
for letter in ‘Python’:
print (‘Current Letter’, letter)
else:
print (‘Coming out of loop’)
On execution, will produce the following:
Current Letter: P
Current Letter: y
Current Letter: t
Current Letter: h
Current Letter: o
Current Letter: n
Coming out of loop

What is the significance of range() function in for-loop? Explain.


Ans: The range() function provides the generated value from its "item-list", required by the loop variable.
Thus, loop block is executed for each value of loop variable. As the last value is assigned to the loop
variable, the loop block is executed last time and control is returned to next statement. If, else is specified
in for-loop, then next statement executed will be else.
When to use for-loop and when to use while-loop? Explain.
Ans: When in advance, we know the number of times iteration required, then use the for-loop. When in
advance, we do not know the number of times iteration required, then use the while-loop.

pg. 40
SOLVED EXAMPLES ON FOR-LOOP CONSTRUCT
1. #Print the table of a number m.
#!DispTableUsingFor.py
m=int(input("Enter the number to print the table: "))
print("TABLE OF", m,"is as following:")
for i in range(1, 11, 1):
print (m,"X",i,"=",m*i )
2. """Print the following pattern: """Print the following pattern:
1*2*3*4*5 5*4*3*2*1
1*2*3*4 5*4*3*2
1*2*3 5*4*3
1*2 5*4
1 5
""" """
#!printPattern01.py #!printPattern02.py
m=5 m=5
for i in range(m,0,-1): for i in range(m,0,-1):
for j in range(1,i+1,1): for j in range(m,m-i,-1):
if j!=i: if j!=m+1-i:
print(j,end="*") print(j,end="*")
else: else:
print(j) print(j)

3. """Print the following pattern:


p
py
pyt
pyth
pytho
python
"""
#!printPattern03.py
str=''
for ch in 'python':
str=str+ch
print(str)
4. Print all multiples of 13 that are smaller than 100. Use the range function in the following manner:
range (start, end, step) where "start" is the starting value of the counter, "end" is the end value and
"step" is the amount by which the counter is increased each time.
#!printMultiples.py
m=13
for multiples in range(m,100, m):
print(multiples)
5. #Using for loop, write program that prints out the floating point equivalent of 1/2, 1/3, 1/4,…
…,1/10
#!floatingPointEquivalent.py
for item in range(2,11):
i=1.0/item
print(round(i,3))
pg. 41
6. WAP in Python using a for-loop that calculates exponentials. Your program should ask for base and
exponent value form user. Note: Do not use ** operator and math module.
#! computeExponential.py
m=int(input("Enter the base: "))
n=int(input("Enter the exponent: "))
product=1
for item in range(1,n+1):
product = product*m
print(product)
7. WAP n Python to reverse the given string ‘python’ as ‘nohtyp’. Also print the following pattern:
n
no
noh
noht
nohty
nohtyp

#!revStr.py
givenStr=input("Enter the string to reverse: ")
revStr=''
for ch in givenStr:
revStr=ch+revStr
print("The Reversed String: ", revStr)

str=''
for ch in revStr:
str=str+ch
print(str)
8. #WAP to count the number of digits, sum of digits of an integer. Also, reverse this integer.
#! revInt.py

import math
m=int(input("Enter, the positive integer: "))
sign=1
if m<0:
m=-m
sign=-1

if m > 0:
numDigitts = int(math.log10(m))+1
elif m == 0:
numDigitts = 1

print("Number of Digitts: ", numDigitts)

sumDigits=revInt=0
for i in range(1,numDigitts+1, 1):
revInt = revInt*10 + m%10
sumDigits += m%10
pg. 42
m //=10

print("Sum of Digits: ", sumDigits)


print("Reversed Integer: ", sign*revInt)

9. #WAP to find whether the given integer is a Palindrome or not


#! palindromeInt.py

import math
m=int(input("Enter, the positive integer: "))
n=m; sign=1; numDigitts=1
if m<0:
m=-m
sign=-1

if m > 0:
numDigitts = int(math.log10(m))+1

revInt=0
for i in range(1,numDigitts+1, 1):
revInt = revInt*10 + m%10
m //=10

if n==sign*revInt:
print("Given Integer is a Palindrome")
else:
print("Given Integer is not a Palindrome")
10. #WAP to check if the given string is palindrome or not
#!palindromeStr.py

givenStr=input("Enter the string: ")


revStr=''
for ch in givenStr:
revStr=ch+revStr
print("The Reversed String: ", revStr)

if givenStr==revStr:
print("Given String is a Palindrome")
else:
print("Given String is not a Palindrome")
11. #WAP in Python to compute the factorial of a positive integer.
#! factorialUsingForLoop.py
fact=1
n=int(input("Enter any number : "))
m=n
for element in range(n,0,-1):
fact*=element
print("Factorial of ", m, ": ", fact)

pg. 43
12 Test if a number is equal to the sum of the cubes of its digits. Find the smallest and largest such numbers.
13. WAP in Python to compute the sum of cosine series.
14. WAP in Python to compute the sum of sine series.

The ‘break’ Statement The ‘continue’ Statement


Python ‘break’ statement Example This ‘continue’ is used to Example
terminates the current loop for ch in 'Python': skip the rest of the for ch in 'Python':
and resumes execution at if ch == 'h': statements of the current if ch == 'h':
the next statement. The break loop block and to move to continue
‘break’ can be used in print(ch) next iteration of the loop. print(ch)
while-loop and for-loop. The ‘continue’ will return
The ‘break’ is mostly will result into back the loop variable of will result into
required, when because of P the loop. This can also be P
some external condition, y used with both while-loop y
we need to exit from a t and for-loop. t
loop. o
n
FLOWCHART
Flowchart refers to the pictorial representation of an algorithm. It uses symbols (boxes of different shapes)
that have standardized meaning to denote different types of instructions. Actual instructions are written
within the boxes. Boxes are connected by solid lines having arrow marks to indicate the exact sequence in
which the instructions are executed. Process of drawing a flowchart for an algorithm is called flowcharting.
Basic Flowchart Symbols Example of Decision Symbol

Advantages of using flowcharts:


 Communication: Flowcharts are better way of communicating the logic of a system to all concerned or
involved.
 Effective analysis: With the help of flowchart, problem can be analysed in more effective way therefore
reducing cost and wastage of time.
 Proper documentation: Program flowcharts serve as a good program documentation, which is needed
for various purposes, making things more efficient.
 Efficient Coding: The flowcharts act as a guide or blueprint during the systems analysis and program
development phase.
 Proper Debugging: The flowchart helps in debugging process.
 Efficient Program Maintenance: The maintenance of operating program becomes easy with the help of
flowchart. It helps the programmer to put efforts more efficiently on that part.

Disadvantages of using flowcharts:

pg. 44
 Complex logic: Sometimes, the program logic is quite complicated. In that case, flowchart becomes
complex and clumsy. This will become a pain for the user, resulting in a waste of time and money trying
to correct the problem.
 Alterations and Modifications: If alterations are required the flowchart may require re-drawing
completely. This will usually waste valuable time.
 Reproduction: As the flowchart symbols cannot be typed, reproduction of flowchart becomes a
problem.

SOME EXAMPLES ON FLOWCHART:


1. Draw the flowchart to read the name and print 2. Draw the flowchart to add two numbers.
the name.

3. Draw the flowchart to calculate area of a 4. Draw the flowchart to calculate the average of
square. three numbers.

5. Draw the flowchart to find the larger of two 6. Draw the flowchart to find the factorial of a
numbers. number.

pg. 45
7. A student who appeared in final examination in 8. Draw the flowchart to find the sum of first N
four subjects, is marked PASS if average marks natural numbers.
are more than or equal to 50 otherwise marked
FAIL. Calculate average marks and print result as
PASS or FAIL.

DECISION TREE
Decision Tree is one of the most powerful and popular algorithm. Decision-tree algorithm falls under the
category of supervised learning algorithms. It works for both continuous as well as categorical output
variables.
INCOMPLETE

PSEUDOCODE
Pseudocode is a method of planning which enables the programmer to plan for coding without worrying about
syntax.

Pseudocodes Python Programs


Task1: Write a pseudocode and program that asks the user for a temperature in Fahrenheit and prints out
the same temperature in Celsius.
Pseudocode: # Python Program:
f = Get user input f=float(input("Enter, Temperature in Fahrenheit: "))
c = Convert f to Celsius
Output message displaying Celsius temperature c=(f-32)*5/9
print ("Temperature in Celsius: ", c)

Task2: Write a pseudocode and program that converts from Fahrenheit to Celsius or from Celsius to
Fahrenheit, depending on the user's choice.
Pseudocode: # Python Program:
choice = input "Enter 1 to convert from F to C or choice=input("Enter 1 to convert from F to C or
Enter 2 to convert from C to F: " Enter 2 to convert from C to F: ")
temp = input "ask what number?" temp=input("Enter, Temp Value For Conversion: ")

if 1 is pressed if int(choice)==1:
do f to c conversion temp=(float(temp)-32)*5/9
print output print("Temperature in Celcius is: ", temp)
pg. 46
else if 2 is pressed elif int(choice)==2:
do c to f conversion temp=float(temp)*9/5 +32
print output print("Temperature in Fahrenheit is: ", temp)

else else:
print "Please re-enter either 1 or 2" print("Please re-enter 1 or 2")

Task3: Write a pseudocode and program that lets the user type characters and as soon as 'x' is pressed, it
prints how many characters the user inputted then quits program.
Pseudocode: # Python Program:
Assume count is 0 count = 0
while true while True:
ch=input "ask user to enter a char or 'x' to quit” ch = input("Enter a char (x to quit): ")
print ch print (ch)
if 'x' is entered if ch=='x':
print number of characters entered print ("No. of characters entered: ", count)
break break
otherwise add 1 to count else:
count = count + 1

Task4: Write a pseudocode and program in which a password is set and the program will keep prompting
the user to guess it, until they get the word right.
Pseudocode: # Python Program:
set password as OPWD opwd = "Suzanne" #original pwd
GPWD= input "ask user to try to guess password" gpwd = input("Enter the password: ") #guessed pwd
while GPWD is wrong while gpwd != opwd:
output "access denied" print ("Access denied")
GPWD= input "ask user to re-try to guess password" gpwd = input("Enter the password: ")
if GPWD is correct if gpwd == opwd:
output "Login successful!!" print ("Login successful!")
break break
else output " Login Successful in first attempt " else:
print ("Login successful in first attempt")

Task5: Write a pseudocode and program that asks the user to enter 10 numbers one by one, and then
prints all those 10 numbers after the last 10th number is entered.
Pseudocode: # Python Program:
Set numbercount is to 0 numcount = 0
list list = []
while the number count <= 9 while numcount <= 9:
ask for input number=input("Enter a number: ")
add one to number count numcount = numcount + 1
append number to list list.append(number)
print numbers on a separate lines print ("The numbers you entered were: ")
print ("\n".join(list))

IDEA OF DEBUGGING:
Errors and Exceptions

pg. 47
Errors or mistakes in a program are often referred to as bugs. They are almost always the fault of the
programmer. The process of finding and eliminating errors is called debugging. Errors can be classified into
three major groups:
i) Syntax errors ii) Runtime errors iii) Logical errors
i) Syntax errors (or parsed errors)
Python will find these kinds of errors when it tries to parse your program, and exit with an error
message without running anything. Syntax errors are mistakes in the use of the Python language, and
are analogous to spelling or grammar mistakes in a language like English- for example, the
sentence "Would you some tea?" does not make sense – it is missing a verb. Common Python
syntax errors include:
 leaving out a keyword
 putting a keyword in the wrong place
 leaving out a symbol, such as a colon, comma or brackets
 misspelling a keyword
 incorrect indentation
 empty block

Note: It is illegal for any block (like an if body, or the body of a function) to be left completely
empty. If you want a block to do nothing, you can use the pass statement inside the block.
Python will do its best to tell you where the error is located, but sometimes its messages can be
misleading: for example, if you forget to escape a quotation mark inside a string you may get a syntax
error referring to a place later in your code, even though that is not the real source of the problem. If
you can't see anything wrong on the line specified in the error message, try backtracking through the
previous few lines. As you grow in programming experience, you will get better at identifying and
fixing errors. Here are some examples of syntax errors in Python:
myfunction(x, y): # Invalid syntax. Keyword if is missing
return x + y
else:
print("Hello!")

if mark >= 50 # Invalid syntax. Colon is missing after condition


print("You passed!")

if arriving:
print("Hi!")
esle: # Invalid syntax. Keyword name is else and not esle
print("Bye!")

if flag:
print("Flag is set!") # Invalid syntax. Expected an indented block

ii) Runtime errors


If a program is syntactically correct – that is, free of syntax errors – it will be run by the Python
interpreter. However, the program may exit unexpectedly during execution if it encounters a runtime
error – a problem which was not detected when the program was parsed, but is only revealed when a
particular line is executed. When a program comes to a halt because of a runtime error, we say that it
has crashed.
pg. 48
Consider the English instruction "flap your arms and fly" to Australia. While the instruction is
structurally correct and you can understand its meaning perfectly, it is impossible for you to follow it.
Some examples of Python runtime errors:
 division by zero
 performing an operation on incompatible types
 using an identifier which has not been defined
 accessing a list element, dictionary value or object attribute which doesn’t exist
 trying to access a file which doesn't exist

Runtime errors often creep in if you don't consider all possible values that a variable could contain,
especially when you are processing user input. You should always try to add checks to your code to
make sure that it can deal with bad input and edge cases gracefully. We will look at this in more detail
in exception handling.

iii) Logical errors


Logical errors are the most difficult to fix. They occur when the program runs without crashing, but
produces an incorrect result. The error is caused by a mistake in the program's logic. You won't get an
error message, because no syntax or runtime error has occurred. You will have to find the problem on
your own by reviewing all the relevant parts of your code – although some tools can flag suspicious
code which looks like it could cause unexpected behaviour.
Sometimes there can be absolutely nothing wrong with your Python implementation of an algorithm –
the algorithm itself can be incorrect. However, more frequently these kinds of errors are caused by
programmer carelessness. Here are some examples of mistakes which lead to logical errors:
 using the wrong variable name
 indenting a block to the wrong level
 using integer division instead of floating-point division
 getting operator precedence wrong
 making a mistake in a Boolean expression
 off-by-one, and other numerical errors

Exceptions and Handling Exceptions


All runtime (and syntax) errors that have encountered are called Exceptions in Python – Python uses them
to indicate that something exceptional has occurred, and that your program cannot continue unless it
is handled.

There are some situations in which runtime errors are likely to occur. Whenever we try to read a file or get
input from a user, there is a chance that something unexpected will happen – the file may have been
moved or deleted, and the user may enter data which is not in the right format. Good programmers should
add safeguards to their programs so that common situations for exceptions could be handled gracefully.
Most users expect that programs must be robust enough to recover from these kinds of setbacks.
If we know that a particular section of our program is likely to cause an error, we can tell Python what to
do if it does happen. Instead of letting the error crash our program we can intercept it, do something about
it, and allow the program to continue. To Handle Exceptions, we use a try-except block as following:

try:
age = int(input("Please enter your age: ")) #useful when a value other than numeric type is entered
print("I see that you are ", age, "years old.")
except ValueError:

pg. 49
print("Hey, that wasn't a number!")

Python will try to process all the statements inside the try block. If a ValueError occurs at any point as it is
executing them, the flow of control will immediately pass to the except block, and any remaining
statements in the try block will be skipped.
In this example, we know that the error is likely to occur when we try to convert the user’s input to an
integer. If the input string is not a number, this line will trigger a ValueError – that is why we specified it as
the type of error that we are going to handle.

We can Raise Exceptions ourselves using the raise statement:


try:
age = int(input("Please enter your age: "))
if age < 0:
raise ValueError(age, "is not a valid age. Age must be positive or zero.")
except ValueError as err: #it is executed when there is any exception or exception raised
print(err)
else: #else is executed when there is not any exception
print("I see that you are ", age, "years old.")

Debugging programs
Debugging is a process of detecting errors in a program segment and replacing erroneous segment with
corrected segment.

Syntax errors are usually quite straightforward to debug: the error message shows us the line in the file
where the error is, and it should be easy to find it and fix it.

Runtime errors can be a little more difficult to debug: the error message and the traceback can tell us
exactly where the error occurred, but that doesn’t necessarily tell us what the problem is. Sometimes they
are caused by something obvious, like an incorrect identifier name, but sometimes they are triggered by a
particular state of the program – it’s not always clear which of many variables has an unexpected value.

Logical errors are the most difficult to fix because they don’t cause any errors that can be traced to a
particular line in the code. All that we know is that the code is not behaving as it should be – sometimes
tracking down the area of the code which is causing the incorrect behaviour can take a long time.

It is important to test your program to make sure that it behaves the way that you expect. A quick and
simple way of testing that a program is doing the right thing, for example, is to insert a print statement
after every line which outputs the intermediate results which were calculated on that line. Most
programmers intuitively do this as they are writing a program, or perhaps if they need to figure out why it
isn’t doing the right thing. It is quite cumbersome and time consuming.
The module pdb (Python DeBugger) defines an interactive source code debugger for Python programs. It
supports setting (conditional) breakpoints and single stepping at the source line level, inspection of stack
frames, source code listing, and evaluation of arbitrary Python code in the context of any stack frame. It
also supports post-mortem debugging and can be called under program control. To use the debugger in its
simplest form:

>>> import pdb


>>> pdb.run('<a statement>')

pg. 50
The debugger's prompt is '(Pdb) '. This will stop in the first function call in <a statement>.

Alternatively, if a statement terminated with an unhandled exception, you can use pdb's post-mortem
facility to inspect the contents of the traceback:

>>> <a statement>


<exception traceback>
>>> import pdb
>>> pdb.pm()

breakpoint()
The breakpoint() describes a new built-in called breakpoint() which makes it easy and consistent to enter
the Python debugger. Built-in breakpoint() calls breakpointhook(). By default, this latter imports pdb
and then calls pdb.set_trace(), but by binding sys.breakpointhook() to the function of your choosing,
breakpoint() can enter any debugger. Or, the environment variable PYTHONBREAKPOINT can be set to
the callable of your debugger of choice.

INCOMPLETE

LISTS
It is an ordered set of values enclosed in square brackets []. Values in the list can be modified, i.e. it is
mutable. As it is set of values, we can use index in square brackets [] to identify a value belonging to it. The
values that make up a list are called its elements, and they can be of any type.
We can also say that list data type is a container that holds a number of elements in a given order. For
accessing an element of the list, indexing is used. Its syntax is:
listName [index]

It will provide the value at 'index+1' in the list. Index here, has to be an integer value which can be
positive or negative. Positive value of index means counting forward from beginning of the list and
negative value means counting backward from end of the list. Remember the result of indexing a list is the
value of type accessed from the list. If m is the size of the list then following will be its elements
representation in the memory for the purpose of accessing?

Some example of simple list:


i) >>>L1 = [1, 2, 3, 4] # list of 4 integer elements.
ii) >>>L2 = [" Delhi", "Chennai", "Mumbai"] #list of 3 string elements.
iii) >>>L3 = [ ] # empty list i.e. list with no element
iv) >>>L4 = ["abc", 10, 20] # list with different types of elements
v) >>>L5 = [1, 2, [6, 7, 8], 3] # A list containing another list known as nested list

To change the value of element of list, we access the element & assign the new value. Example-
>>>print(L1) # let's get the values of list before change
[1, 2, 3, 4]
pg. 51
>>> L1 [2] = 5
>>> print(L1) # modified list
[1, 2, 5, 4]
Here, 3rd element of the list (accessed using index value 2) is given a new value, so instead of 3 it will be 5.

State diagram for the list looks like:


L1 0 1 L2 0 Delhi L3
1 2 1 Chennai
2 3 2 Mumbai
3 4

Note: List index works the same way as String index, which is:
 An integer value/expression can be used as index.
 An Index Error appears, if you try and access element that does not exist in the list.
 An index can have a negative value, in that case counting happens from the end of the list.

Creating a list- List can be created in many ways:


i) By enclosing elements in [ ]. For example- >>>L1 = [1, 2, 3, 4]
ii) Using other Lists. For Example-
>>>L5=L1[:] #Here L5 is created as a copy of L1.
>>>print(L5) # It will print list L5 with elements [1, 2, 3, 4]
>>>L6 = L1 [0:2] # will create L6 having first two elements of L1.
>>>print(L6) # It print list L6 with elements [1, 2]
iii) List comprehension. List comprehension is a short-hand for creating list.
Example01-
>>>n = 5
>>>L = range(n)
>>>print L
[0, 1, 2, 3, 4]
Example02-
>>> S = [x**2 for x in range (10)]
>>> print S
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Example03-
>>> A = [3, 4, 5]
>>> B = [value *3 for value in A] #B is created such that its each element is thrice of element of A.
>>> print(B)
[9, 12, 15]
Comprehensions are functionally equivalent to writing as:
>>>B = [ ]
>>>for i in A:
B. append (i*3)
>>> print(B)
[9, 12, 15]
Similarly, other comprehensions can be expended.

Let's create a list of even numbers belonging to 'S' list (in example02):
>>> S = [x**2 for x in range (10)] #given as example02

pg. 52
>>>C = [i for i in S if i % 2 == 0]
>>>print(C)
[0, 4, 16, 36, 64]

iv) Using built-in object


>>>L = list() #will create an empty list
>>> print(L)
[] #empty list
# or L = list (sequence) where sequence is set of ordinal values in asc or desc order. For example-
>>> L = list([1, 2, 3, 4])
>>>print L
[1, 2, 3, 4]

A single new list is created every time, you execute [ ]. We have created many different lists each time
using [ ]. But if a list is assigned to another variable, a new list is not created.
i) A=B=[ ] #Creates one list mapped to both A & B
Example01-
>>>A = B = [10, 20, 30]
>>> print(A, B)
[10, 20, 30] [10, 20, 30]
ii) A = [ ]
B = A #Will also create one list mapped to both
Example02-
>>> A = [1, 2, 3]
>>> B = A
>>> print(A, B)
[1, 2, 3] [1, 2, 3]

Accessing an Element of List- For accessing an element, we use index and we have already seen
example doing so. To access an element of list containing another list (i.e the nested list), we use pair of
index. Let’s access elements of L5 list. Also a sub-list of list can be accessed using list slice.
List Slices-Slice operator works very well on list. We know that a slice of a list is its sub-list. Let, L5 be a list
as created below:
>>> L5 = [1, 2, [6, 7, 8], 3]
>>>print(L5 [0]) # first element is 1
1
>>>print( L5 [2]) #third element of L5 is a nested list
[6, 7, 8]
>>>print(L5 [2] [0]) #to access first element from the nested-list, second index is being used
6
>>>print(L5 [2] [2]) #to access third element from the nested-list, second index is being used
8

For creating a list slice, we use [n:m] operator. This will return the part of the list from n th element to mth
element, including the first element but excluding the last element. So the resultant sub-list (i.e. list slice)
will have m-n elements in it. Consider the list L1 as created below:
>>>L1 = [1, 2, 3, 4]
>>>L1 [1:2] #will result into [2]
[2]
pg. 53
Slices are treated as boundaries, and the result will contain all the elements between boundaries. Its
syntax is:
seq = L[start: stop: step]
Where start, stop & step- all three are optional. If you omit first index, slice starts from '0' index and
omitting of stop will take it to last index +1. Default value of step is 1.
Example01- Let L2 be the following list: Example02-
>>> L2 = ['Delhi', 'Chennai', 'Mumbai'] >>>L [:3]
>>> L2[0:2] #The list slice from index 0 to 1 [10, 20, 30]
['Delhi', 'Chennai'] >>>L [:]
[10, 20, 30, 40, 50, 60]
Example03- Example04-
>>>L = [10, 20, 30, 40, 50, 60] >>> L[-1] # '-1' refers to last elements of list
>>> L [::2] #List slice with every alternate element 60
[10, 30, 50] Example05-
>>>L [4:] #List slice from index 4 to end+1 >>> L [-1::-1] #List slice from last index to first index
[50, 60] with a step of -1
[60, 50, 40, 30, 20, 10]
Note: Since lists are mutable, it is often recommended to make a copy of it before performing operation
that change a list.

Traversing a List- Let us visit each element (traverse the list) of the list to display them on screen. This can
be done in many ways. Let L1 = [1, 2, 5, 4]
i) L1=[1,2,5,4] ii) L1=[1,2,5,4]
i=0 for i in L1:
while i < 4: print(i, end=' ')
print(L1[i], end=' ')
i += 1
iii) L1=[1,2,5,4] iv) L1=[1,2,5,4]
i=0 for i in range (len(L1)):
while i < len(L1): print(L1[i], end=' ')
print(L1[i], end=' ')
i += 1
Note:
 Each of the four ways will produce the same output as: 1 2 5 4
 The len( ) function is used to get the length of list L1. As length of L1 is 4, i will take value from 0 to 3.
 Using 2nd way for transversal will only allow us to print the list, but other ways can also be used to
write or update the element of the list.
 In 4th way, range( ) function is used to generate, indices from 0 to len -1; with each iteration i gets the
index of next element and values of list are printed.
 The for-loop in empty list is never executed. For example-
for i in [ ]:
print(i) # No execution
Appending in the list- Appending to a list means adding one element at a time, at the end of the list. To
do so, Python provides a method append( ). Its Syntax is:
List. append (item)

pg. 54
i) L1 = [1, 2, 3, 4] ii) >>>L4 = ['abc', 10, 20, 30]
>>>L1. append (70) ) # will append 70 to L1 >>>L4.append (30) # will append 30 to L4
>>> print(L1) # will print updated L1 >>>print(L4) # will print updated L4
[1, 2, 5, 4, 70] ['abc', 10, 20, 30, 30]
For adding more than one element, extend( ) method can be used, this can also be used to add elements of
another list to the existing one. (I am stopping writing Python prompt i.e. >>> in rest of the examples)
i) L1 = [1, 2, 3, 4] ii) B=[2009, 2011, 'abc']
A = [100, 90, 80, 50] C=['xyz', 'pqr', 'mn']
L1. extend (A) #will add A to the end of L1 B.extend(C)
print(L1) #will print updated L1 print(B) #will print updated B
#[1, 2, 3, 4, 100, 90, 80, 50] OUTPUT #[2009, 2011, 'abc', 'xyz', 'pqr', 'mn'] OUTPUT
Updating array (i.e. List) elements- Updating an element of a list is, accomplished by accessing the
element & modifying its value in place. It is possible to modify a single element or a part of list. For first
type, we use index to access single element (see following example01) and for second type, list slice is used
(see following example02).

Example01- WAP in Python to modify the list L1=[3, 4, 8, 9] such that all its even elements are multiplied
by 10 and odd elements by 20. Also print the modified list.
i) L1=[3, 4, 8, 9] ii) L1=[3, 4, 8, 9]
i=0 for i in range(len(L1)):
while i < len(L1): if L1[i]%2==0:
if L1[i]%2==0: L1[i]=10*L1[i]
L1[i]=10*L1[i] else:
else: L1[i]=20*L1[i]
L1[i]=20*L1[i] print(L1)
i += 1 #[60, 40, 80, 180] OUTPUT
print(L1)
#[60, 40, 80, 180] OUTPUT
i) L1=[3, 4, 8, 9] ii) L1=[3, 4, 8, 9]
i=0 for i in range(len(L1)):
while i < len(L1): if L1[i]%2==0:
if L1[i]%2==0: L1[i]=10*L1[i]
L1[i]=10*L1[i] else:
else: L1[i]=20*L1[i]
L1[i]=20*L1[i] print(L1)
i += 1 #[60, 40, 80, 180] OUTPUT
print(L1)
#[60, 40, 80, 180] OUTPUT

Example02- (i) WAP in Python to replace (or modify) from mth to (n-1)th elements of a list with list slice ['a',
'b', 'c']. Take L1=[0, 1, 2, 3, 4, 5]
(ii) WAP in Python to replace (or modify) from mth to (last +1)th elements with list slice ['a']. Take L1=[0, 1,
2, 3, 4, 5]
i) L1=[0, 1, 2, 3, 4, 5] ii) L1=[0, 1, 2, 3, 4, 5]
L1[1:3] = ['a', 'b', 'c'] L1[1:6] = ['a']
"""Form index 1 to 3-1, list slice ['a', 'b', 'c'] will """Form index 1 to 6-1, list slice ['a'] will be
be substituted""" substituted"""

pg. 55
print(L1) print(L1)
#[0, 'a', 'b', 'c', 3, 4, 5] OUTPUT #[0, 'a'] OUTPUT
Using + and * operators- Use of these operators generate a new list. It is important to know that ‘+’
operator in lists expects the same type of sequence on both the sides otherwise you get a type error.
If you want to concatenate a list and a string, either you have to convert the list to string or string to list.
Example-
i) L1=[0, 1, 2] ii) L1=[1, 2, 3] + [4, 5, 6]
L2 = ['Delhi', 'Chennai', 'Mumbai'] print(L1)
L3 = L1 + L2 #[1, 2, 3, 4, 5, 6] OUTPUT
print(L3)
#[0, 1, 2, 'Delhi', 'Chennai', 'Mumbai'] OUTPUT
iii) L1=[2, 3, 4] iv) L1 = ['ROSARY']*3
L2 = L1*4 print(L1)
print(L2) #['ROSARY', 'ROSARY', 'ROSARY']OUTPUT
#[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4] OUTPUT
v) print(str([11, 12]) + "34") vi) print([11, 12] + list("34"))
#or print("[11, 12]" + "34") # or print([11, 12] + ["3", "4"])
#[11, 12]34 OUTPUT #[11, 12, '3', '4'] OUTPUT
Deleting Elements From List- It is possible to delete/remove element(s) from the list. There are many
ways of doing so:
i) If index is known, we can use pop() or del()
The pop() removes the element from the specified index, and also returns the element which was
removed. Its syntax is:
List.pop ([index])
If no index value is provided in pop ( ), then last element is deleted.
Example-
L1 = [1, 2, 4, 5, 6]
A = L1.pop(1) # here the element deleted will be returned to list A.
print(L1)
print(A)
B = L1.pop() # here the last element is deleted and returned to list B.
print(L1)
print(B)
""" OUTPUT
[1, 4, 5, 6]
2
[1, 4, 5]
6
"""
The del() removes the element from the list with specified index, but does not return the deleted
value.
L1 = [1, 2, 3, 4, 5]
print(L1)
del L1[3] #3 is index number
print(L1)
""" OUTPUT
[1, 2, 3, 4, 5]
pg. 56
[1, 2, 3, 5]
"""

ii) If the element is known, and not the index, remove() can be used.
L1 = [10, 20, 30, 40, 50]
print("List before deletion: ", L1)
L1.remove(30) # 30 is the element value
print("List after deletion: ", L1)
""" OUTPUT
List before deletion: [10, 20, 30, 40, 50]
List after deletion: [10, 20, 40, 50]
"""

iii) To remove more than one element, del() with list slice is used. Consider the following example:
L1 = [10, 20, 30, 40, 50, 60]
print("List before deletion: ", L1)
del L1[2:4]
print("List after deletion: ", L1)
""" OUTPUT
List before deletion: [10, 20, 30, 40, 50, 60]
List after deletion: [10, 20, 50, 60]
"""
iv) Using assignment operator, a list slice can be deleted as shown below:
L5 = [1, 2, [6, 7, 8], 3]
print("Before Deletion: ", L5)
L5[1:2] = []
print("After Deletion: ", L5)
""" OUTPUT
Before: [1, 2, [6, 7, 8], 3]
After: [1, [6, 7, 8], 3]
"""
pg. 57
Note:
(i) All methods modify the list, after deletion(s) applied.
(ii) If an out of range index is provided with del() and pop(), the code will result into run-time error.
(iii) del() can be used with negative index value also.
Inserting Elements in List- The method insert(), inserts an element, at the given position specified by its
index, and the remaining elements are shifted to accommodate the new element. Its syntax is
list. insert (indexValue, itemValue)
Index specifies the position (starting from 0) where the element is to be inserted. Item is the element to be
inserted in the list. Length of list changes after insert operation. Example-
i) Inserting before the 1st element- ii) Inserting after the last element-
L5 = [10,20,30] #indexes are: 0, 1, 2 OR -3, -2, -1 L5 = [10, 20, 30] #index are: 0, 1, 2 OR -3, -2, -1
print("List Before Insertion: ", L5) print("List Before Insertion: ", L5)
L5.insert(0, 5) Length=len(L5)
print("List After Insertion: ", L5) L5.insert(Length, 5)
print("List After Insertion: ", L5)
OUTPUT
List Before Insertion: [10, 20, 30] OUTPUT
List After Insertion: [5, 10, 20, 30] List Before Insertion: [10, 20, 30]
List After Insertion: [10, 20, 30, 5]
iii) Inserting between 1st and last element- iv) Note: If the index specified >=len(list), then item
L5 = [10,20,30] #Indexes are: 0, 1, 2 OR -3, -2, -1 is inserted after the last element(i.e. at the last
print("List Before Insertion: ", L5) element position).
L5.insert(1, 5) L5 = [10, 20, 30] #Indexes are: 0, 1, 2 OR -3, -2, -1
print("List After Insertion: ", L5) print("List Before Insertion: ", L5)
L5.insert(len(L5), 5)
OUTPUT print("List After Insertion: ", L5)
List Before Insertion: [10, 20, 30]
List After Insertion: [10, 5, 20, 30] OUTPUT
List Before Insertion: [10, 20, 30]
List After Insertion: [10, 20, 30, 5]

If index specified <=-len(list) is less than zero, the


item is inserted before the first element (i.e. at
the first element position).
L5 = [10, 20, 30] #Indexes are: 0, 1, 2 OR -3, -2, -1
print("List Before Insertion: ", L5)
L5.insert(-len(L5), 5)
print("List After Insertion: ", L5)

OUTPUT
List Before Insertion: [10, 20, 30]
List After Insertion: [5, 10, 20, 30]

Reversing Elements of the List- The method reverse() can be used to reverse the elements of the list in
place. Its syntax is:
list.reverse()
Method does not return anything as the reversed list is stored in the same variable. Example-
L1=[10, 20, 30, 40]

pg. 58
print("List Before reversing: ", L1)
L1.reverse() # or L1[::-1] will also result into reversal of list L1
print("List After reversing: ", L1)

OUTPUT
List Before reversing: [10, 20, 30, 40]
List After reversing: [40, 30, 20, 10]

Sorting Elements of the List- For arranging elements in an order Python provides a method sort() and a
function sorted(). Sort() modifies the list in place and sorted() returns a new sorted list. Its Syntax are:
sort ([cmp [, key [, reverse]]])
sorted (list [, cmp [, key [, reverse]]])
Parameters mentioned in [ ] are optional in both the cases. These parameters allow us to customize the
function/method.
'cmp', argument allow us to override the default way of comparing elements of list. By default, sort
determines the order of elements by comparing the elements in the list against each other. To override
this, we can use a user defined function which should take two values and return -1 for 'less than', 0 for
'equal to' and 1 for 'greater than'.
'Key' argument is preferred over 'cmp' as it produces list faster. The parameter 'key' is for specifying a
function that transforms each element of list before comparison. We can use predefined functions or a
user defined function here. If its user defined then, the function should take a single argument and return a
key which can be used for sorting purpose. Reverse parameter can have a boolean value which is used to
specify the order of arranging the elements of list. Value 'True' for reverse will arrange the elements of list
in descending order and value 'False' for reverse will arrange the elements in ascending order. Default
value of this parameter is False.
sorted() function also behaves in similar manner except for it produce a new sorted list, so original is not
changed. This function can also be used to sort any iterable collection. As sort() method does not create a
new list so it can be little faster.
Examples-
i) L2=['Mumbay','Chennai', 'Delhi'] ii) L4 = [20, 40, 30, 10]
print("List Before Sorting: ", L2) print("List Before Sorting: ", L4)
L2.sort() L4.sort()
print("List After Sorting: ", L2) print("List After Sorting: ", L4)
print() L4 = [20, 40, 30, 10]
L2.sort (key=len) L4.sort(reverse = True)
print("List After Sorting for key=len: ", L2) print("List After Sorting in reverse order: ", L4)
OUTPUT OUTPUT
List Before Sorting: ['Mumbay', 'Chennai', 'Delhi'] List Before Sorting: [20, 40, 30, 10]
List After Sorting: ['Chennai', 'Delhi', 'Mumbay'] List After Sorting: [10, 20, 30, 40]
List After Sorting in reverse order: [40, 30, 20,
List After Sorting for key=len: ['Delhi', 'Mumbay', 10]
'Chennai']

Here in i) we have specified len() built in function, as key for sorting. So the list will get sorted by the length
of the strings, i.e., from shortest to longest. sort() will call len() function for each element of list and then
these lengths will be used for arranging elements. See the figure given below :

pg. 59
MATRIX IMPLEMENTATION USING LIST
One can implement matrix using list. Matrix operations require use of nested list. List inside another list is
called nested list. The creation, initialization of matrix and input|output is as following:
For Numeric Elements For String Elements
The Creation and Initialization of matrix The Creation and Initialization of matrix
import random import random
x = random.random() x = str(random.random())
A = [[x for row in range(n)] for col in range(m)] A = [[x for row in range(n)] for col in range(m)]
Where, m represents number of rows, n represents Where, m represents number of rows, n represents
number of columns and A is m-by-n matrix. number of columns and A is m-by-n matrix.

Input for matrix Input for matrix


for i in range(m): for i in range(m):
for j in range(n): for j in range(n):
y = input("Enter new element: ") y = input("Enter new element: ")
A[i][j]= int(y) # or float(y) if floating points A[i][j]= y

Printing Matrix Printing Matrix


for i in range(m): for i in range(m):
for j in range(n): for j in range(n):
print(A[i][j],end='\t') print(A[i][j],end='\t')
print() print()

Example- WAP in Python that accepts input for mXn matrix and prints both diagonal values of the matrix.
Matrix With Integer Elements Matrix With String Elements
m=input("Enter total number of rows: "); m=int(m) m=input("Enter number of rows: "); m=int(m)
n=input("Enter total number of columns: "); n=int(n) n=input("Enter number of columns: "); n=int(n)
import random import random
S = random.random() S = str(random.random())
A = [[S for row in range(n)]for col in range(m)] A = [[S for row in range(n)]for col in range(m)]
print("Input all matrix elements one after other") print("Input all matrix elements one after other")
for i in range(m): for i in range(m):
for j in range(n): for j in range(n):
y = input("Enter new element: ") y = input("Enter new element: ")
A[i][j]= int(y) A[i][j]= y

print("\nEntered Matrix is:") print("\nEntered Matrix is")


for i in range(m): for i in range(m):
for j in range(n): for j in range(n):
print(A[i][j],end='\t') print(A[i][j],end='\t')
print() print()

pg. 60
print("\nFirst Diagonal Elements Are:") print("\nFirst Diagonal Elements Are:")
for i in range(m): for i in range(m):
print(A[i][i],end='\t') print(A[i][i],end='\t')

print("\nSecond Diagonal Elements Are:") print("\nSecond Diagonal Elements Are:")


for i in range(m): for i in range(m):
print(A[i][m-1-i],end='\t') print(A[i][m-1-i],end='\t')

OUTPUT OUTPUT
Enter total number of rows: 3 Enter number of rows: 3
Enter total number of columns: 3 Enter number of columns: 3
Input all matrix elements one after other Input all matrix elements one after other
Enter new element: 1 Enter new element: a
Enter new element: 2 Enter new element: b
Enter new element: 3 Enter new element: c
Enter new element: 4 Enter new element: d
Enter new element: 5 Enter new element: e
Enter new element: 6 Enter new element: f
Enter new element: 7 Enter new element: g
Enter new element: 8 Enter new element: h
Enter new element: 9 Enter new element: i

Entered Matrix is: Entered Matrix is


1 2 3 a b c
4 5 6 d e f
7 8 9 g h i

First Diagonal Elements Are: First Diagonal Elements Are:


1 5 9 a e i
Second Diagonal Elements Are: Second Diagonal Elements Are:
3 5 7 c e g

SOLVED EXAMPLES ON LIST (NO IN-BUILT FUNCTION IS TO BE USED)


1. WAP in Python to find maximum element, minimum element and mean value in a given list of m
integers.
Solution:
#!List_maxMinMean.py
m=5; L=[]
print("Enter", m, "Intrger Elements in the List:")
for i in range(0, m, 1):
a=int(input())
L.append(a)
# or L = [int(x) for x in input().split(",")] for comma separated input on same line
# or L = [int(x) for x in input().split(" ")] for space separated input on same line
print("The List Elements are: ", L)
max=L[0];min=L[0]; sum=L[0]
for i in range(1, m, 1):
sum += L[i]
pg. 61
if L[i]>max:
max=L[i]
if L[i]<min:
min=L[i]
print("Maximum element in the List is: ", max)
print("Minimum element in the List is: ", min)
print("Mean element in the List is: ", float(sum)/m)

OUTPUT
Enter 5 Intrger Elements in the List:
3
5
1
4
2
The List Elements are: [3, 5, 1, 4, 2]
Maximum element in the List is: 5
Minimum element in the List is: 1
Mean element in the List is: 3.0
2. WAP in Python to search an item within a list of m integer elements.
Solution:
#!List_linearSearch.py
m=5; L=[]; loc=-1
print("Enter", m, "Intrger Elements in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("The List is:", L)
item=int(input("Enter, an integer element to search: "))
for i in range(0, m, 1):
if item==L[i]:
loc=i
break
if loc !=-1:
print("The element", item, "is found in the list at location:", loc)
else:
print("The element", item, "is not found in the list")

OUTPUT
Enter 5 Integer Elements in the List:
42513
The List is: [4, 2, 5, 1, 3]
Enter, an integer element to search: 5
The element 5 is found in the list at location: 2
3. WAP in Python to count the frequency of an element in the List.
Solution:
#!List_elementFreq.py
m=10; L=[]; freq=0
print("Enter", m, "Integer Elements in the List(comma separated on the same line):")
L = [int(x) for x in input().split(',')]
print("The List is:", L)
pg. 62
item= int(input("Enter, the element whose frequency is to be conted in the List:"))
for i in range(0, m): #by default step is one when not mentioned
if item==L[i]:
freq +=1
print("The element", item, "appeared in the list", freq,"number of times")

OUTPUT
Enter 10 Integer Elements in the List(comma separated on the same line):
3,1,3,2,6,5,3,8,3,9
The List is: [3, 1, 3, 2, 6, 5, 3, 8, 3, 9]
Enter, the element whose frequency is to be conted in the List:3
The elemnet 3 appeared in the list 4 number of times

4. We can use list to represent polynomial. For Example


p(x) = -13.39 + 17.5x + 3x2 + x4 can be stored as [-13.39, 17.5, 3, 0.0, 1.0]. Here 'index ' is used to
represent power of 'x ' and value at the index used to represent the coefficient of the term.
WAP in Python to evaluate the polynomial for a given 'x '.
Solution:
#!List_evalPolynomial
coefficients=[-13.39, 17.5, 3, 0.0, 1.0]; p=0.0;
print("List of coefficients: ",coefficients)
x=float(input("Enter value of x: "))
for i in range(0,5,1):
p += coefficients[i]*x**i
print("p(x) at x=", x, "is: ", round(p,3))

OUTPUT
List of coefficients: [-13.39, 17.5, 3, 0.0, 1.0]
Enter value of x: 2.7
p(x) at x= 2.7 is: 108.874

5. WAP in Python that takes a list of numbers and returns the cumulative sum; that is, a new list where
its element is the sum of the first i+1 elements from the original list. For example, the cumulative sum
of [1, 2, 3] is [1, 3, 6].
Solution:
#!List_cumulativeSum.py
m=5; L=[]; newL=[]; sum=0
print("Enter", m, "Integer Elements in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
for i in range(0, m, 1):
sum += L[i]
newL.append(sum)
print("Given List:", L)
print("New List:", newL)

OUTPUT
Enter 5 Integer Elements in the List(space separated on same line):
12345
Given List: [1, 2, 3, 4, 5]
pg. 63
New List: [1, 3, 6, 10, 15]

6. WAP in Python that accepts a list through input via keyboard and modifies it by removing the first and
last elements. This modified list is displayed on the screen.
Solution:
#!List_delFirst_n_Last.py
m=7; L=[];
print("Enter", m, "Integer Elements in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("Original List:", L)

for i in range(m-1, -1, -1): #start from the highest index


if i==m-1 or i==0:
L.pop(i)
print("List after deletion:", L)

OUTPUT
Enter 7 Integer Elements in the List(space separated on same line):
1234567
Original List: [1, 2, 3, 4, 5, 6, 7]
List after deletion: [2, 3, 4, 5, 6]

7. WAP that accepts a list through input via keyboard and displays either "List is Sorted in ASC order" or
"List is Sorted in DESC order" or "List is not Sorted in any order. In case You can assume (as a
precondition) that the elements of the list can be compared with the relational operators <, >, etc.
For example, the list [1, 2, 2] is in ASC order and *‘b’, ‘a’+) is in DESC order.
Solution:
#!List_sortedUnsorted.py
m=5; L=[]; sortInASC=True; sortInDESC=True; randomOrder=True
print("Enter", m, "in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("Entered List Elements:", L)
for i in range(0, m-1, 1):
if L[i+1]>=L[i]:
pass
else:
sortInASC=False

if L[i+1]<=L[i]:
pass
else:
sortInDESC=False
if sortInASC==True:
randomOrder=False
print("List is Sorted in ASC order")

if sortInDESC==True:
randomOrder=False
print("List is Sorted in DESC order")
pg. 64
if randomOrder==True:
print("List is not Sorted in any order")

OUTPUT
Enter 5 in the List(space separated on same line):
12234
Entered List Elements: [1, 2, 2, 3, 4]
List is Sorted in ASC order

Enter 5 in the List(space separated on same line):


43221
Entered List Elements: [4, 3, 2, 2, 1]
List is Sorted in DESC order

Enter 5 in the List(space separated on same line):


34125
Entered List Elements: [3, 4, 1, 2, 5]
List is not Sorted in any order

8. WAP that accepts an integer list in sort order through input via keyboard and inserts an item such
that the sort order remains intact. It displays the resultant list on the screen.
Solution:
#!LIst_insItem.py
#Let the distinct elements in the list are in ASC order.
m=5; L=[]; loc=0
print("Enter", m, "integers in the List(b separated on same line):")
L = [int(x) for x in input().split('b')]

print("List Before Insertion:", L)


item=int(input("Enter item for insertion: "))
if item<=L[0]:
loc=0
elif item>=L[m-1]:
loc=m

for i in range(0, m-1, 1):


if item>L[i] and item<L[i+1]:
loc=i+1

L.insert(loc, item)
print("List After Insertion:", L)

OUTPUT
Enter 5 integers in the List(b separated on same line):
11b22b33b44b55
List Before Insertion: [11, 22, 33, 44, 55]
Enter item for insertion: 1
pg. 65
List After Insertion: [1, 11, 22, 33, 44, 55]

Enter 5 integers in the List(b separated on same line):


11b22b33b44b55
List Before Insertion: [11, 22, 33, 44, 55]
Enter item for insertion: 66
List After Insertion: [11, 22, 33, 44, 55, 66]

Enter 5 integers in the List(b separated on same line):


11b22b33b44b55
List Before Insertion: [11, 22, 33, 44, 55]
Enter item for insertion: 40
List After Insertion: [11, 22, 33, 40, 44, 55]

9. WAP that accepts an integer list in any order through input via keyboard and deletes an item. It
displays the resultant list on the screen.
Solution:
#!List_delItem.py
#Let the distinct elements in the list are not in any order.
m=5; L=[]; loc=0
print("Enter", m, "integers in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]

print("List Before Deletion:", L)


item=int(input("Enter item for Deletion: "))

print("List After Deletion:", L)

OUTPUT
Enter 5 integers in the List(space separated on same line):
53142
List Before Deletion: [5, 3, 1, 4, 2]
Enter item for Deletion: 1
List After Deletion: [5, 3, 4, 2]

10. WAP that accepts an integer list in any order through input via keyboard and creates a new list with
distinct elements after removing repeated elements. It displays the resultant list on the screen.
Solution:
#!List_delRepeatedItems.py

m=10; L=[]
print("Enter", m, "integers in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("List Before New List Creation:", L)
S = []
pg. 66
print("New List with Distinct Elements: ", S)

OUTPUT
Enter 10 integers in the List(space separated on same line):
1232425653
List Before New List Creation: [1, 2, 3, 2, 4, 2, 5, 6, 5, 3]
New List with Distinct Elements: [1, 2, 3, 4, 5, 6]

11. WAP in Python to reverse the order of given list. Also, display the resultant list
Solution:
#!List_reversing.py
m=5; L=[]
print("Enter", m, "integers in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("List Before Reversing:", L)
i=0; j=m-1
while i<=j:
temp=L[i]
L[i]=L[j]
L[j]=temp
i=i+1; j=j-1
print("List After Reversing : ", L)

OUTPUT
Enter 5 integers in the List(space separated on same line):
53142
List Before Reversing: [5, 3, 1, 4, 2]
List After Reversing : [2, 4, 1, 3, 5]

12. WAP to find the product and sum of all elements in list of integers. Display product and sum on
screen.
Solution:
#!List_product_n_sum.py
m=5; L=[]
print("Enter", m, "integers in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("List Elements are:", L)
product=1; sum=0
for elements in L:
product=product*elements
sum=sum+elements
print("Product of all Elements: ", product)
print("Sum of all Elements: ", sum)

OUTPUT

pg. 67
Enter 5 integers in the List(space separated on same line):
12345
List Elements are: [1, 2, 3, 4, 5]
Product of all Elements: 120
Sum of all Elements: 15

13 WAP that accepts a list of positive integers in any order through input via keyboard. From this create
three sub-lists named as even, odd and prime. Even list will consist of even integers, odd list will
consist of odd integers and prime list will consist of prime numbers only. Display each of the three
lists with appropriate heading.
Solution:
#!List_evenOddPrime.py
m=10; L=[]; even=[]; odd=[]; prime=[]
print("Enter", m, "integers in the List(space separated on same line):")
L = [int(x) for x in input().split(' ')]
print("List Elements are:", L)
for i in L:
if i%2==0:
even.append(i)
else:
odd.append(i)
flag=1
for j in range(2, i//2, 1):
if i%j==0:
flag=0
break
if flag==1:
prime.append(i)

print("List of Even Numbers: ", even)


print("List of Odd Numbers: ", odd)
print("List of Prime Numbers: ", prime)

OUTPUT
Enter 10 integers in the List(space separated on same line):
3 56 59 90 63 82 80 99 107
List Elements are: [3, 56, 59, 90, 63, 82, 80, 99, 107]
List of Even Numbers: [56, 90, 82, 80]
List of Odd Numbers: [3, 59, 63, 99, 107]
List of Prime Numbers: [3, 59, 107]

14. WAP in Python that accepts two lists of positive integers in ASC order through input via keyboard.
Lists may not be of same length and one or both may be empty. Don't use any Python built-in
methods or functions.
Solutions:
#!List_merging.py
m=5; n=7; A=[]; B=[]; C=[]
print("Enter", m, "integers in the List A(space separated on same line):")
A = [int(x) for x in input().split(' ')]
pg. 68
print("Enter", n, "integers in the List B(space separated on same line):")
B = [int(x) for x in input().split(' ')]
ia=0; ib=0;
while ia<m and ib<n:
if A[ia]<B[ib]:
C.append(A[ia])
ia += 1
else:
C.append(B[ib])
ib += 1
if ia>=m:
while ib<n:
C.append(B[ib])
ib += 1
if ib>=n:
while ia<m:
C.append(A[ia])
ia += 1
print("The List A:", A)
print("The List B:", B)
print("The List C:", C)

OUTPUT
Enter 5 integers in the List A(space separated on same line):
11 22 33 44 55
Enter 7 integers in the List B(space separated on same line):
7 17 27 37 47 57 67
The List A: [11, 22, 33, 44, 55]
The List B: [7, 17, 27, 37, 47, 57, 67]
The List C: [7, 11, 17, 22, 27, 33, 37, 44, 47, 55, 57, 67]

15. WAP in Python to input any matrix with mXn, and print the matrix on the output screen in matrix
format.
Solution:
#!List_matrixInput.py
m=3; n=2
#Following is the MATRIX initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows
print(A)
print("Enter", m*n, "Intrger Elements in the Matrix one after other on different lines:")

for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num

print("MATRIX")
for i in range(m):
pg. 69
for j in range(n):
print(A[i][j], end='\t')
print()

OUTPUT
Enter 6 Intrger Elements in the Matrix one after other on different lines:
Enter Element No. 1 : 1
Enter Element No. 2 : 2
Enter Element No. 3 : 3
Enter Element No. 4 : 4
Enter Element No. 5 : 5
Enter Element No. 6 : 6
MATRIX
1 2
3 4
5 6
16. WAP to add two matrices with same dimensions i.e. mxn
Solution:
#!List_matrixAddition.py
m=3; n=2
#Following is the MATRICES initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows
B=[[[] for i in range(n)] for j in range(m)]
C=[[[] for i in range(n)] for j in range(m)]

print("Enter", m*n, "Intrger Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(n):
print(A[i][j], end='\t')
print()

print("Enter", m*n, "Intrger Elements in the Matrix B after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
B[i][j]=num
print("MATRIX B")
for i in range(m):
for j in range(n):
print(B[i][j], end='\t')
print()

pg. 70
#MATRIX addition foolws
for i in range(m):
for j in range(n):
C[i][j] = A[i][j] + B[i][j]
print("RESULTANT MATRIX C")
for i in range(m):
for j in range(n):
print(C[i][j], end='\t')
print()

OUTPUT
Enter 6 Intrger Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 11
Enter Element No. 2 : 12
Enter Element No. 3 : 13
Enter Element No. 4 : 14
Enter Element No. 5 : 15
Enter Element No. 6 : 16
MATRIX A
11 12
13 14
15 16
Enter 6 Intrger Elements in the Matrix B after other on different lines:
Enter Element No. 1 : 21
Enter Element No. 2 : 22
Enter Element No. 3 : 23
Enter Element No. 4 : 24
Enter Element No. 5 : 25
Enter Element No. 6 : 26
MATRIX B
21 22
23 24
25 26
RESULTANT MATRIX C
32 34
36 38
40 42
17. WAP to compute the multiplication of two matrices Amxp and Bpxn
Solution:
#!List_matrixMultiplication.py
m=3; p=2; n=3
#Following is the MATRICES initialization
A=[[[] for i in range(p)] for j in range(m)] # for each row, p columns. For each column, m rows
B=[[[] for i in range(n)] for j in range(p)] # for each row, n columns. For each column, p rows
C=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows

print("Enter", m*p, "Intrger Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(p):
pg. 71
print("Enter Element No.", p*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(p):
print(A[i][j], end='\t')
print()

print("Enter", p*n, "Intrger Elements in the Matrix B after other on different lines:")
for i in range(p):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
B[i][j]=num
print("MATRIX B")
for i in range(p):
for j in range(n):
print(B[i][j], end='\t')
print()

#MATRIX multiplication follows


for i in range(m):
for j in range(n):
C[i][j]=0
for k in range(p):
C[i][j] = C[i][j] + A[i][k]*B[k][j]
print("RESULTANT MATRIX C")
for i in range(m):
for j in range(n):
print(C[i][j], end='\t')
print()

OUTPUT
Enter 6 Intrger Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 1
Enter Element No. 2 : 2
Enter Element No. 3 : 3
Enter Element No. 4 : 4
Enter Element No. 5 : 5
Enter Element No. 6 : 6
MATRIX A
1 2
3 4
5 6
Enter 6 Intrger Elements in the Matrix B after other on different lines:
Enter Element No. 1 : 11
Enter Element No. 2 : 12
Enter Element No. 3 : 13
pg. 72
Enter Element No. 4 : 14
Enter Element No. 5 : 15
Enter Element No. 6 : 16
MATRIX B
11 12 13
14 15 16
RESULTANT MATRIX C
39 42 45
89 96 103
139 150 161
18. WAP in Python to input MXN matrix and find sum of all even numbers in the matrix.
Solution:
#!List_sumOfEvenInMatrix.py
m=3; n=3
#Following is the MATRICES initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows

print("Enter", m*n, "Intrger Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(n):
print(A[i][j], end='\t')
print()

sum=0
for i in range(m):
for j in range(n):
if A[i][j]%2==0:
sum=sum +A[i][j]
print("Sum of all even numbers in the matrix: ", sum)

OUTPUT
Enter 9 Intrger Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 11
Enter Element No. 2 : 12
Enter Element No. 3 : 13
Enter Element No. 4 : 14
Enter Element No. 5 : 15
Enter Element No. 6 : 16
Enter Element No. 7 : 17
Enter Element No. 8 : 18
Enter Element No. 9 : 19
MATRIX A
11 12 13
pg. 73
14 15 16
17 18 19
Sum of all even numbers in the matrix: 60
19. Write a program to print upper triangle matrix.
Solution:
#!List_upperDiagonal.py
m=3; n=3
#Following is the MATRIX initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows

print("Enter", m*n, "Integer Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(n):
print(A[i][j], end='\t')
print()

print()
print("UPPER TRIANGLE MATRIX FOLLOWS:")
for i in range(m):
for j in range(n):
if i<=j:
x=str(A[i][j])
else:
x=' '
print(x,end='\t')
print()

OUTPUT
Enter 9 Intrger Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 1
Enter Element No. 2 : 2
Enter Element No. 3 : 3
Enter Element No. 4 : 4
Enter Element No. 5 : 5
Enter Element No. 6 : 6
Enter Element No. 7 : 7
Enter Element No. 8 : 8
Enter Element No. 9 : 9
MATRIX A
1 2 3
4 5 6
7 8 9

pg. 74
UPPER TRIANGLE MATRIX FOLLOWS:
1 2 3
5 6
9
20. Write a program to print lower triangle matrix.
Solution:
#!List_lowerDiagonal.py
m=3; n=3
#Following is the MATRIX initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows

print("Enter", m*n, "Integer Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(n):
print(A[i][j], end='\t')
print()

print()
print("LOWER TRIANGLE MATRIX FOLLOWS:")
for i in range(m):
for j in range(n):
if i>=j:
x=str(A[i][j])
else:
x=' '
print(x,end='\t')
print()

OUTPUT
Enter 9 Integer Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 1
Enter Element No. 2 : 2
Enter Element No. 3 : 3
Enter Element No. 4 : 4
Enter Element No. 5 : 5
Enter Element No. 6 : 6
Enter Element No. 7 : 7
Enter Element No. 8 : 8
Enter Element No. 9 : 9
MATRIX A
1 2 3
4 5 6
7 8 9
pg. 75
LOWER TRIANGLE MATRIX FOLLOWS:
1
4 5
7 8 9
21. Write a program to find sum of rows and columns of the matrix.
Solution:
#!List_sumRowsColumns.py
m=3; n=3
#Following is the MATRIX initialization
A=[[[] for i in range(n)] for j in range(m)] # for each row, n columns. For each column, m rows

print("Enter", m*n, "Integer Elements in the Matrix A after other on different lines:")
for i in range(m):
for j in range(n):
print("Enter Element No.", n*i+j+1,":" ,end=' ')
num=int(input())
A[i][j]=num
print("MATRIX A")
for i in range(m):
for j in range(n):
print(A[i][j], end='\t')
print()

print("\nSum of Different Rows:")


for i in range(m):
X=0
for j in range(n):
X=X+A[i][j]
print(X,end='\t')

print("\nSum of Different Columns:")


for j in range(n):
X=0
for i in range(m):
X=X+A[i][j]
print(X,end='\t')

OUTPUT
Enter 9 Integer Elements in the Matrix A after other on different lines:
Enter Element No. 1 : 1
Enter Element No. 2 : 2
Enter Element No. 3 : 3
Enter Element No. 4 : 4
Enter Element No. 5 : 5
Enter Element No. 6 : 6
Enter Element No. 7 : 7
Enter Element No. 8 : 8
Enter Element No. 9 : 9
pg. 76
MATRIX A
1 2 3
4 5 6
7 8 9

Sum of Different Rows:


6 15 24
Sum of Different Columns:
12 15 18

DICTIONARY
A dictionary is like a list, but more in general. In a list, index value is an integer; while in a dictionary index
value can be any other data type and are called keys. The key will be used as a string as it is easy to recall. A
dictionary is extremely useful data storage construct for storing and retrieving all key value pairs, where
each element is accessed (or indexed) by a unique key. However, dictionary keys are not in sequences and
hence maintain no left-to-right order.
Key-value pair
We can refer to a dictionary as a mapping between a set of indices (which are called keys) and a set of
values. Each key maps a value. The association of a key and a value is called a key-value pair. Its syntax:
my_dict = ,'key1': 'value1','key2': 'value2','key3': 'value3'…'keyn': 'valuen'-

Note: Dictionary is created by using curly brackets (ie. {}).


Example-
>>> A={1:"one",2:"two",3:"three"}
>>> print(A)
{1: 'one', 2: 'two', 3: 'three'}
In the above example, we have created a list that maps from numbers to
English words, so the keys values are in numbers and values are in strings.
Example-
>>>computer={'input':'keybord','output':'screen','language':'python'}
>>> print(computer)
{'input':'keybord','output':'screen','language':'python'}
The sequence of computer keys are in the same order as has been during its creation; however such an
order in dictionary is unpredictable (In Python 2.7).
Example-
>>>D={'d1':'monday','d2':'Tuesday','d3':'Wednesday','d4':'Thursday','d5':'Friday','d6':'Saturday','d7':'sunday'}
>>>print(D)
{'d1':'monday','d2':'Tuesday','d3':'Wednesday','d4':'Thursday','d5':'Friday','d6':'Saturday','d7':'sunday'}

Creation, Initializing and Accessing Elements in a Dictionary


The function dict() is used to create a new dictionary with no items. This function is called built-in function.
We can also create dictionary using {}.
>>> D=dict()
>>> print(D)
{}
{} represents empty string. To add an item to the dictionary (empty string), we can use square brackets for
accessing and initializing dictionary values.
Example- Look at the following Python script

pg. 77
H=dict() OUTPUT
H["one"]="keyboard" {'one': 'keyboard', 'two': 'Mouse', 'three': 'printer',
H["two"]="Mouse" 'Four': 'scanner'}
H["three"]="printer"
H["Four"]="scanner"
print(H)
Traversing a Dictionary- Visiting each element of the dictionary to display on screen can be done by using
'for-loop'. Example-
H={'four': 'scanner', 'three': 'printer', 'two': 'Mouse', 'one': 'keyboard'}
for i in H:
print(i,":", H[i],end='\t\t')

OUTPUT
four : scanner three : printer two : Mouse one : keyboard

OR
H = {'Four': 'scanner', 'three': 'printer', 'two': 'Mouse', 'one': 'keyboard'}
print("i value\tH[i] value")
for i in H:
print(i,"\t", H[i])

OUTPUT
i value H[i] value
Four scanner
three printer
two Mouse
one keyboard

Creating, initializing values during run time (Dynamic allocation)- We can create a dictionary during run
time also by using dict() function. This way of creation is called dynamic allocation. Because during run
time, keys and values are added to the dictionary.
Example- WAP in Python to input sections and class teachers name in 11th class and display all information
on the output screen.
Solution:
classxi=dict()
n=input("Enter total number of section in xi class: "); n=int(n)
i=1
while i<=n:
a=input("Enter section: ")
b=input ("Enter class teacher name: ")
classxi[a]=b
i=i+1

print("Class\tSection\tteacher name")
for i in classxi:
print("XI\t",i,"\t",classxi[i])

OUTPUT
Enter total number of section in xi class: 5
pg. 78
Enter section: A
Enter class teacher name: Amar Malik
Enter section: B
Enter class teacher name: Bikram Sirohi
Enter section: C
Enter class teacher name: Chaman Singh
Enter section: D
Enter class teacher name: Dharm Singh
Enter section: E
Enter class teacher name: Eshwar Deol
Class Sectionteacher name
XI A Amar Malik
XI B Bikram Sirohi
XI C Chaman Singh
XI D Dharm Singh
XI E Eshwar Deol

Appending values to the dictionary- We can add new elements to the existing dictionary, extend it with
single pair of values or join two dictionaries into one. If we want to add only one element to the dictionary,
then we should use the following method. Syntax:
Dictionary name [key] = value
Example-
D={"mon":"monday","tue":"tuesday","wed":"wednesday"}
D["thu"]="thursday"
print(D)

OUTPUT
{'mon': 'monday', 'tue': 'tuesday', 'wed': 'wednesday', 'thu': 'thursday'}

Merging dictionaries: An update()


Two dictionaries can be merged into one by using update() method. It merges the keys and values of one
dictionary into another and overwrites values of the same key. Sort order is not maintained. Its syntax is:
dic_name1.update (dic_name2)
Using this dic_name2 is merged into dic_name1.
Example-
d1={1:10,2:20,3:30,4:40}
d2={2:20,4:40,5:50,6:60}
d1.update(d2)
print(d1)
OUTPUT
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}
Example-
d1={1:10,2:20,3:30,6:60}
d2={2:30,5:40,6:60}
d1.update(d2)
print(d1)
OUTPUT
{1: 10, 2: 30, 3: 30, 6: 60, 5: 40} #key2 value is replaced with 30 in d1

pg. 79
Removing an item from dictionary
One can remove an item from the existing dictionary by using del key word. The syntax is:
del dicname[key]
Example-
D={'d1':'mon','d2':'tue','d3':'wed','d4':'thu','d5':'fri','d6':'sat','d7':'sun'}
del D['d3']
print(D)

OUTPUT
{'d1': 'mon', 'd2': 'tue', 'd4': 'thu', 'd5': 'fri', 'd6': 'sat', 'd7': 'sun'}

Dictionary Functions and Methods


Function Name Description Example
cmp(d1,d2) Returns 0 if both dictionaries are same d1={1:"one", 2:"two", 3:"three"}
Returns 1 if d1 has more number of items, d2={1:"one", 2:"two", 3:"three"}
otherwise -1. d3={1:"one", 3:"three"}
Note: cmp() is valid for Python version print(cmp(d1,d2))
earlier than 3.0 print(cmp(d1,d3))
print(cmp(d3,d1))
0
1
-1
len(d1) len(d1) returns number of key-value pairs in d1={1:"one", 2:"two", 3:"three"}
the given dictionary d1. print(len(d1))
3
clear() It removes all key-value pairs from the d1={1:"one", 2:"two", 3:"three"}
dictionary. d1.clear()
print(d1)
{}
get(gkey, gvalue ) This function returns the dictionary 'value' if d1={1:"one", 2:"two", 3:"three"}
function 'gkey' matches with the dictionary print(d1.get(2,'two'))
key, otherwise returns None. The gvalue is print(d1.get(2,'three'))
optional. print(d1.get(2))
print(d1.get(4))
two
two
two
None
has_key() This function returns 'True', if dictionary has d1={1:"one", 2:"two", 3:"three"}
a key, otherwise it returns 'False'. print(d1.has_key(2))
Note: has_key() is valid for Python version print(d1.has_key(4))
earlier than 3.0 True
False
items() This function returns content of the d1={1:"one", 2:"two", 3:"three"}
dictionary as a list of key-value pair. The key- print(d1.items())
value pair will be in the form of a tuple. dict_items([(1, 'one'), (2, 'two'), (3,
'three')])
keys() It returns a list of keys from key-value pairs in d1={1:"one", 2:"two", 3:"three"}
a dictionary. print(d1.keys())
pg. 80
dict_keys([1, 2, 3])
values() It returns a list of values from key-value pairs d1={1:"one", 2:"two", 3:"three"}
in a dictionary. print(d1.values())
dict_values(['one', 'two', 'three'])

SOLVED EXAMPLES
1. WAP in Python to input ‘n’ names and phone numbers of friends to store it in a dictionary. Now input
any name of your friend and print his/her phone number.
Solution:
#!dict_01.py
phonebook=dict()
n=input("Enter total number of friends: "); n=int(n)
i=1
while i<=n:
a=input("Enter name: "); b=input("Enter phone number: ")
phonebook[a]=b
i=i+1

name=input("Enter name whose phone number is to be searched: ")


print(phonebook.get(name))

OUTPUT
Enter total number of friends: 4
Enter name:Piyush
Enter phone number: 9192939495
Enter name:Suresh
Enter phone number: 9128384857
Enter name:Prateek
Enter phone number: 7263646528
Enter name:Rahul
Enter phone number: 4256727548
Enter name whose phone number is to be searched: Prateek
7263646528
2. WAP in Python to input 'n' employee numbers and names and to display all information of employees
in ascending order based upon their employee number.
Solution:
#!dict_02.py
empinfo=dict()
n=input("Enter total number of employees: "); n=int(n)
i=1
while i<=n:
a=input("Enter number: ")
b=input("Enter name: ")
empinfo[a]=b
i=i+1
empno=list(empinfo.keys())
empno.sort()

print("Employee Information")
pg. 81
print("Emp No.\tEmp Name")
for i in empno:
print(i,'\t',empinfo[i])
3. Write the output for the following Python code:
A={1:100, 2:200, 3:300, 4:400, 5:500}
Print(A.items())
Print(A.keys())
print (A.values())

OUTPUT
dict_items([(1, 100), (2, 200), (3, 300), (4, 400), (5, 500)])
dict_keys([1, 2, 3, 4, 5])
dict_values([100, 200, 300, 400, 500])

4. # WAP in Python to create a phone book and delete particular phone number using name.
Solution:
#!dict_04.py
phonebook=dict()
n=input("Enter total number of friends: "); n=int(n)

for i in range(1,n+1,1):
a=input("Enter name: "); b=input("Enter phone number: ")
phonebook[a]=b

name=input("\nEnter name for deletion: ")


del phonebook[name]
L=list(phonebook.keys())
print("Phonebook Information")
print("Name\t\tPhone number")
for i in L:
print(i,'\t\t',phonebook[i])

OUTPUT
Enter total number of friends: 4
Enter name: Arun
Enter phone number: 1928374655
Enter name: Yash Veer
Enter phone number: 5674839211
Enter name: Tejbir
Enter phone number: 9812873476
Enter name: Jaswant
Enter phone number: 3746558291

Enter name for deletion: Tejbir


Phonebook Information
Name Phone number
Arun 1928374655
Yash Veer 5674839211
Jaswant 3746558291
pg. 82
5. # WAP in Python to input any 5 years and the population of any city and print it on the screen.
Solution:
#!dict_05.py
populationRegister=dict()
n=input("Enter total number of years: "); n=int(n)

for i in range(1,n+1,1):
year=input("Enter year: "); cityPopulation=input("Enter city population in this year: ")
populationRegister[year]=cityPopulation

L=list(populationRegister.keys())
print("Year-Wise City Population Information")
print("Year\t\tPhone number")
for i in L:
print(i,'\t\t',populationRegister[i])

OUTPUT
Enter total number of years: 5
Enter year: 1980
Enter city population in this year: 100000
Enter year: 1990
Enter city population in this year: 120000
Enter year: 2000
Enter city population in this year: 141000
Enter year: 2010
Enter city population in this year: 163000
Enter year: 2017
Enter city population in this year: 180000
Year-Wise City Population Information
Year Phone number
1980 100000
1990 120000
2000 141000
2010 163000
2017 180000
6. Write a code in Python to input 'n' number of subjects and head of the departments and also display
all information on the output screen.
#!dict_05.py
HOD=dict()
n=input("Enter total number of subjects: "); n=int(n)

for i in range(1,n+1,1):
subName=input("Enter Subject: "); hodName=input("Enter HOD name in this subject: ")
HOD[subName]=hodName

L=list(HOD.keys())
print("Subject-Wise HOD Names")
print("Subject\t\t\tHOD Name")
for i in L:
pg. 83
print(i,'\t\t\t',HOD[i])

OUTPUT
Enter total number of subjects: 5
Enter Subject: Psysics
Enter HOD name in this subject: Pallavi Joshi
Enter Subject: Chemistry
Enter HOD name in this subject: Raman Singh
Enter Subject: Mathematics
Enter HOD name in this subject: RN Singh
Enter Subject: Biology
Enter HOD name in this subject: Gajendra Chauhan
Enter Subject: Computer Science
Enter HOD name in this subject: Lavinder Sodhi
Subject-Wise HOD Names
Subject HOD Name
Psysics Pallavi Joshi
Chemistry Raman Singh
Mathematics RN Singh
Biology Gajendra Chauhan
Computer Science Lavinder Sodhi

7. Re-write the following code after correction. Underline each correction made.
Given Code: Corrected Code:
c=dict() c=dict()
n=int(input(Enter total number: )) n=int(input("Enter total number: ")) #e01
i=1 i=1
while i<=n while i<=n: #e02
a=input("Enter place: ") a=input("Enter place: ")
b=input("Enter number: ") b=input("Enter number: ")
c(a)=b c[a]=b #e03
i=i+1 i=i+1
print("Place\t\tNumber") print("Place\t\tNumber")
for i in c: for i in c:
print(i,"\t\t",cla[i]) print(i,"\t\t",c[i]) #e04

TUPLES (ONLY FOR CS STUDENTS)


A tuple is a sequence of values, which can be of any type and they are indexed by integer. Tuples are just
like list, but we can’t change values of tuples in place. Thus tuples are immutable. The index value of tuple
starts from 0. A tuple consists of a number of values separated by commas. For example:
T=10, 20, 30, 40 # T=(10, 20, 30, 40)
print(T)
(10, 20, 30, 40)
But in the result, same tuple is printed using parentheses. To create a tuple with single element, we have
to use final comma. A value within the parenthesis is not tuple.
Examples-
i) T=(10) #or T=10 ii) T=10, #T=(10,)
print(T, type(T)) print(T, type(T))
pg. 84
OUTPUT OUTPUT
10 <class 'int'> (10,) <class 'tuple'>
iii) T=(10,20) # or T=10,20 iv) T='sun','mon','tue' #or T=('sun','mon','tue')
print(T, type(T)) print(T, type(T))

OUTPUT OUTPUT
(10, 20) <class 'tuple'> ('sun', 'mon', 'tue') <class 'tuple'>
v) T='P','Y','T','H','O','N' #or T=('P','Y','T','H','O','N') L1=[10, 20]; L2=[100,200]
print(T, type(T)) T=L1,L2 # or T=(L1, L2)
print(T, type(T))
OUTPUT
'P', 'Y', 'T', 'H', 'O', 'N') <class 'tuple'> OUTPUT
([10, 20], [100, 200]) <class 'tuple'>
Tuple Creation-
i) If we need to create a tuple with a single ii) Another way of creating tuple is built-in
element, we need to include a final comma. function tuple (). It creates empty tuple.
Example- OUTPUT Example- OUTPUT
T=10, (10,) T = tuple() ()
Print(T) Print(T)
Add New Element to Tuple-
i) We can add new element to tuple using + ii) #WAP to add 'n' numbers & store in the tuple.
operator. See the following code: T=tuple()
T=(10,20,30,40) n=int(input("How many numbers to input: "))
print("Tuple before modification: ",T) for i in range(n):
T+(60,) # this will not create modification of T. print("Enter number ",i+1,": ", end=' ')
print("Result of T+(60,): ",T) a=int(input()); T=T+(a,)
T=T+(60,) # this will do modification of t. print("Output is: ", T) OR
print("Result of T=T+(60,): ",T) print("Output is: ", end=' ')
for i in range(n):
OUTPUT OUTPUT print(T[i], end=' ')
Tuple before modification: (10, 20, 30, 40) How many numbers to input: 3
Result of T+(60,): (10, 20, 30, 40) Enter number 1 : 10
Result of T=T+(60,): (10, 20, 30, 40, 60) Enter number 2 : 30
Enter number 3 : 20
Output is: (10, 30, 20)
iii) We can also add new element to tuple by using list. For that we have to convert the tuple into a list
first and then use append() function to add new elements to the list. After completing the addition,
convert the list into tuple. Following example illustrates how to add new elements to tuple using a list.
See the following code:
T=tuple() #It creates empty tuple
print(T)
L1=list(T) #It convert tuple into list
L1.append(10) #Add new elements to list
L1.append(20)
T=tuple(L1) #It convert list into tuple
print(T)

OUTPUT
pg. 85
()
(10, 20)
Initializing tuple values-
T=(0,)*10 OUTPUT
print(T) (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Tuple Assignment-
i) To interchange (swap) any two variable values, ii) Python provides more elegant tuple
temporary variable is used. See the following assignment. See the following code:
code: A=(1,2); B=(11,22,33) # A & B are tuples
A=10; B=20 #A & B are not tuples print("Tuple A & B before swapping:",A,B)
print("Tuple A & B before swapping:",A,B) A,B=B,A
T=A; A=B; B=T print("Tuple A & B after swapping:",A,B)
print("Tuple A & B after swapping:",A,B)
OUTPUT
OUTPUT Tuple A & B before swapping: (1, 2) (11, 22, 33)
Tuple A & B before swapping: 10 20 Tuple A & B after swapping: (11, 22, 33) (1, 2)
Tuple A & B after swapping: 20 10 NOTE: T1,T2,T3=T3,T1,T2 is also valid

Tuple Slices-
Slice operator works on Tuple also. This is used to display more than one selected value on the output
screen. Slices are treated as boundaries and the result will contain all the elements between boundaries.
The syntax is:
Seq = T [start: stop: step]
Where start, stop & step all three are optional. If we omit first index, slice starts from ‘0’. On omitting stop,
slice will take it to end. Default value of step is 1. Some examples-
i) T=(10,20,30,40,50) ii) T=(10,20,30,40,50)
T1=T[2:4] T1=T[:] # or T[::] Produces a copy of Tuple T
print(T1) print(T1)

OUTPUT OUTPUT
(30, 40) (10, 20, 30, 40, 50)
In this example, starting position is 2 and
ending position is 3(4-1), so the selected
elements are 30 & 40.
iii) T=(10,20,30,40,50) iv) T=(10,20,30,40,50, 60, 70)
T1=T[::2] T1=T[::3] #Will produce a Tuple with positions
#Produces a Tuple with positions 0, 2 and 4 0,3,6
print(T1) print(T1)

OUTPUT OUTPUT
(10, 30, 50) (10, 40, 70)
v) T=(10,20,30,40,50) vi) T=(10,20,30,40,50)
T1=T[2:] #Will produce a Tuple from 2 to end. T1=T[:3] #Produces a Tuple 0 to 2(3-1)
print(T1) print(T1)

OUTPUT OUTPUT
(30, 40, 50) (10, 20, 30)

Tuple Functions-
pg. 86
Function Name Description Example
cmp(t1,t2) Returns 0 if both tupless are same T1=(10,20,30)
Returns 1 if t1 has more number of items, T2=(100,200,300)
otherwise -1. T3=(10,20,30)
Note: cmp() is valid for Python version earlier print(cmp(T1,T3))
than 3.0 print(cmp(T2,T1))
print(cmp(T1,T2))
0
1
-1
len(t1) It returns, number of items in a tuple t1. t1=(100,200,300,400,500)
print(len(t1))
5
max(t1) It returns its largest item in the tuple t1. t1=(100,200,300,400,500)
print(max(t1)
500
min(t1) It returns its smallest item in the tuple t1. t1=(100,200,300,400,500)
print(min(t1)
100
tuple() It is used to create empty tuple. t1=tuple()
print(t1)
()
SOLVED EXAMPLES
1. WAP in Python to input 5 subject names and put it in tuple and display that tuple information on the
output screen.
Solution: OUTPUT
Enter all subjects one after other Enter all subjects one after other
Enter subject: Eng Enter subject: Eng
Enter subject: Math Enter subject: Math
Enter subject: Phy Enter subject: Phy
Enter subject: Chem Enter subject: Chem
Enter subject: CS Enter subject: CS
t1= ('Eng', 'Math', 'Phy', 'Chem', 'CS') t1= ('Eng', 'Math', 'Phy', 'Chem', 'CS')
2. WAP In Python to input any two tuples and interchange the tuple values.
Solution: OUTPUT
t1=tuple() Total number of values in first tuple:3
m=int(input("Total number of values in first Enter elements: 10
tuple:")) Enter elements: 20
for i in range(m): Enter elements: 30
a=input("Enter elements: ") Total number of values in second tuple: 4
t1=t1+(a,) Enter elements: 100
t2=tuple() Enter elements: 200
n=int(input("Total number of values in second Enter elements: 300
tuple: ")) Enter elements: 400
for i in range(n): First Tuple: ('10', '20', '30')
a=input("Enter elements: ") Second Tuple: ('100', '200', '300', '400')
t2=t2+(a,) AFTER SWAPPING
First Tuple: ('100', '200', '300', '400')
print("First Tuple: ", t1); Second Tuple: ('10', '20', '30')
pg. 87
print("Second Tuple:", t2);

t1,t2=t2,t1
print("AFTER SWAPPING")
print("First Tuple: ", t1);
print("Second Tuple:", t2);
3. WAP in Python to input 'n' numbers and store it in a tuple and find maximum & minimum values in
the tuple without use of Python function.
Solution: OUTPUT
t1=tuple() Total number of values in a tuple:5
n=int(input("Total number of values in a tuple:")) Enter elements: 30
for i in range(n): Enter elements: 20
a=int(input("Enter elements: ")) Enter elements: 50
t1=t1+(a,) Enter elements: 10
Enter elements: 40
big=small=t1[0] Maximum value= 50
for i in range(1, n): Minimum value= 10
if t1[i]>big:
big=t1[i]
if t1[i]<small:
small=t1[i]

print("Maximum value=",big)
print("Minimum value=",small)
4. Find the output from the following code: OUTPUT
T=(10,30,2,50,5,6,100,65) 100
print(max(T)) 2
print(min(T))
5. Find the output from the following code: OUTPUT
t=tuple() ('PYTHON',)
t = t +('PYTHON',) 1
print(t) 3
print(len(t))
t1=(10,20,30)
print(len(t1))
6. Write the output from the following codes:
i) t=(10,20,30,40,50) OUTPUT
print(len(t)) 5
ii) t=('a','b','c','A','B') OUTPUT
print(max(t)) c
print(min(t)) A
iii) t=tuple() OUTPUT
print(len(t)) 0
iv) T1=(10,20,30,40,50) OUTPUT
T2=(100,200,300) (10, 20, 30, 40, 50, 100, 200, 300)
T3=T1+T2
print(T3)
7. WAP in Python to input two sets of values and store them in tuples and also do the comparison.
Solution: OUTPUT1
pg. 88
t1=tuple() Total number of values in first tuple:3
m=int(input("Total number of values in first Enter elements: 1
tuple:")) Enter elements: 2
for i in range(m): Enter elements: 3
a=int(input("Enter elements: ")) Total number of values in second tuple: 2
t1=t1+(a,) Enter elements: 1
t2=tuple() Enter elements: 2
n=int(input("Total number of values in second t1 is bigger than t2
tuple: ")) OUTPUT2
for i in range(n): Total number of values in first tuple:2
a=int(input("Enter elements: ")) Enter elements: 1
t2=t2+(a,) Enter elements: 2
Total number of values in second tuple: 3
cmpRes=0 Enter elements: 1
len1=len(t1) Enter elements: 2
len2=len(t2) Enter elements: 3
if len1>len2: t1 is smaller than t2
cmpRes=1 OUTPUT3
print("t1 is bigger than t2") Total number of values in first tuple:3
elif len1<len2: Enter elements: 1
cmpRes=-1 Enter elements: 2
print("t1 is smaller than t2") Enter elements: 3
else: Total number of values in second tuple: 3
for i in range(len1): Enter elements: 1
if t1[i] != t2[i]: Enter elements: 2
cmpRes=2 Enter elements: 3
break; t1 is identical to t2
if cmpRes==0: OUTPUT4
print("t1 is identical to t2") Total number of values in first tuple:3
elif cmpRes==2: Enter elements: 1
print("Same size t1 & t2 are different") Enter elements: 2
Enter elements: 3
Total number of values in second tuple: 3
Enter elements: 10
Enter elements: 20
Enter elements: 30
Same size t1 & t2 are different
8. WAP in Python to input 'n' numbers and separate the tuple in the following manner. See the example:
If given tuple T=(10,20,30,40,50,60) then slice it into T1 and T2 such that T1 =(10,30,50) and
T2=(20,40,60)
Solution: OUTPUT
T=tuple() Total number of values in tuple:6
m=int(input("Total number of values in tuple:")) Enter elements: 10
for i in range(m): Enter elements: 20
a=int(input("Enter elements: ")) Enter elements: 30
T=T+(a,) Enter elements: 40
T1=T[0:m:2] Enter elements: 50
T2=T[1:m:2] Enter elements: 60
print("First Slice: ", T1) First Slice: (10, 30, 50)
pg. 89
print("Second Slice: ", T2) Second Slice: (20, 40, 60)
9. Let a, b and c be the three sides of a right triangle such that i) c 2=b2+c2, ii) c=b+1 and iii) The side a>1
and is an odd integer. WAP in Python to input the value of 'a' and compute 'b' and 'c'. Add all three
sides into a tuple and display the tuple on screen. Create three such sets.
Solution: OUTPUT
for i in range(3): Enter side a: 3
T=tuple() Tuple content: (3, 4, 5)
a=int(input("Enter side a: ")) Enter side a: 5
if a>1 and a%2==1: Tuple content: (5, 12, 13)
b=(a**2-1)//2 Enter side a: 7
c=b+1 Tuple content: (7, 24, 25)
T=T+(a,) +(b,) + (c,)
print("Tuple content: ", T)
10. Let a, b and c be the three sides of a right triangle such that i) c2=b2+c2, ii) c=b+2 and iii) The side a>2
and is an even integer. WAP in Python to input the value of 'a' and compute 'b' and 'c'. Add all three
sides into a tuple and display the tuple on screen. Create three such sets.
Solution: OUTPUT
for i in range(3): Enter side a: 4
T=tuple() Tuple content: (4, 3, 5)
a=int(input("Enter side a: ")) Enter side a: 6
if a>2 and a%2==0: Tuple content: (6, 8, 10)
b=(a//2)**2-1 Enter side a: 8
c=b+2 Tuple content: (8, 15, 17)
T=T+(a,) +(b,) + (c,)
print("Tuple content: ", T)

SORTING ALGORITHMS (ONLY FOR CS STUDENTS)


Bubble sort- bubble sort compares a[i] with a[i+1] for all i=0..n-2, if a[i] and a[i+1] are not in ascending
order then exchange a[i] with a[i+1] immediately. After, each iteration all elements which are not at their
proper position move at least one position towards their right place in the collection. The process
continues until all elements get their proper place in the collection (i.e. algorithm terminates if no
exchange occurs in the last iteration). For example, consider the following unsorted collection to be sorted
using bubble sort

Original
collection

Iteration1: The element a[0] i.e. 8 is compared with a[1] i.e. 5, since 8>5 therefore exchange 8 with 5.

The element a[1] i.e. 8 and a[2] i.e. 9 are already in ascending order so no exchange required.

The element a[2] i.e. 9 and a[3] i.e. 3 are not in ascending order so exchange a[2] with a[3]

pg. 90
The element a[3] i.e. 9 and a[4] i.e. 16 are in ascending order so no exchange required.

The element a[4] i.e. 16 and a[5] i.e. 4 are not in ascending order so exchange a[4] with a[5]

The element a[5] i.e. 16 and a[6] i.e. 7 are not in ascending order so exchange a[5] with a[6]

Since in iteration1 some elements were exchanged with each other which shows that
collection was not sorted yet, next iteration continues. The algorithm will terminate only if
the last iteration do not process any exchange operation which assure that all elements of the
array are in proper order.

Iteration2: Only exchange operations are shown in each pass

In iteration2, some exchange operations were processed. So, at least one more iteration is
required to assure that collection is in sorted order.

Iteration3:

Iteration4:

Iteration5:

In iteration 5 no exchange operation executed because all elements are already in proper
order therefore the algorithm will terminate after 5th iteration.

pg. 91
WAP in Python to accept m distinct integers (in random order) in the list and sort them in ASC order
using Bubble Sort Algorithm.
Solution: OUTPUT
#!List_BubbleSort.py Enter 7 Intrger Elements in the List:
8
m=7; L=list() 5
print("Enter", m, "Intrger Elements in the List:") 9
for i in range(0, m, 1): 3
a=int(input()) 16
L.append(a) 4
7
print("Origional List: ", L) Origional List: [8, 5, 9, 3, 16, 4, 7]
for i in range(0, m, 1): List After Iteration 1 is [5, 8, 3, 9, 4, 7, 16]
swapping=False List After Iteration 2 is [5, 3, 8, 4, 7, 9, 16]
for j in range(0, m-1, 1): List After Iteration 3 is [3, 5, 4, 7, 8, 9, 16]
if L[j]>L[j+1]: List After Iteration 4 is [3, 4, 5, 7, 8, 9, 16]
swapping=True List After Iteration 5 is [3, 4, 5, 7, 8, 9, 16]
temp=L[j]
L[j]=L[j+1]
L[j+1]=temp
if swapping==True:
print("List After Iteration",i+1,"is",L)
else:
print("List After Iteration",i+1,"is",L)
break
WAP in Python to accept m distinct integers (in random order) in the tuple and sort them in ASC order
using Bubble Sort Algorithm.
Solution: OUTPUT
#!Tuple_BubbleSort.py Enter 7 Integer Elements in the Tuple:
m=7; T=tuple() 8
print("Enter", m, "Integer Elements in the Tuple:") 5
for i in range(0, m, 1): 9
a=int(input()) 3
T=T+(a,) 16
4
print("Origional Tuple: ", T) 7
for i in range(0, m, 1): Origional Tuple: (8, 5, 9, 3, 16, 4, 7)
swapping=False Tuple After Iteration 1 is (5, 8, 3, 9, 4, 7, 16)
for j in range(0, m-1, 1): Tuple After Iteration 2 is (5, 3, 8, 4, 7, 9, 16)
if T[j]>T[j+1]: Tuple After Iteration 3 is (3, 5, 4, 7, 8, 9, 16)
swapping=True Tuple After Iteration 4 is (3, 4, 5, 7, 8, 9, 16)
T1=T[0:j] Tuple After Iteration 5 is (3, 4, 5, 7, 8, 9, 16)
T2=T[j+1:j+2]
T3=T[j:j+1]
T4=T[j+2:]
T=T1+T2+T3+T4
if swapping==True:
print("Tuple After Iteration",i+1,"is",T)

pg. 92
else:
print("Tuple After Iteration",i+1,"is",T)
break

Insertion Sort- Insertion sort algorithm divides the collection of n elements into two subparts, the first
subpart contain a[0] to a[k] elements in sorted order and the second subpart contain a[k+1] to a[n] which
are to be sorted. The algorithm starts with only first element in the sorted subpart because collection of
one element is itself in sorted order. In each pass, the first element of the unsorted subpart is removed and
is inserted at the appropriate position in the sorted collection so that the sorted collection remain in sorted
order and hence in each pass the size of the sorted subpart is increased by 1 and size of unsorted subpart is
decreased by 1. This process continues until all n-1 elements of the unsorted collection are inserted at
their appropriate position in the sorted array. For example, consider the following unsorted collection to
be sorted using selection sort:

Original 0 1 2 3 4 5 6
Collection 8 5 9 3 16 4 7
Sorted ----------------------Unsorted-----------------------
Initially the sorted subpart contains only one element i.e. 8 and the unsorted subpart contains
n-1 elements where n is the number of elements in the given collection.

Iteration1: To insert first element of the unsorted subpart i.e. 5 into the sorted subpart, 5 is compared
with all elements of the sorted subpart starting from rightmost element to the leftmost
element, shift all elements of the sorted subpart whose value is greater than 5 one position
towards right to create an empty place at the appropriate position in the sorted array, store 5
at the created empty place, here 8 will move from position a[0] to a[1] and a[0] is filled by 5.
After first pass the status of the collection is:
0 1 2 3 4 5 6
5 8 9 3 16 4 7
--Sorted-- -------------------Unsorted---------------

Iteration2: In 2nd pass, 9 is the first element of the unsorted subpart, 9 is compared with 8, since 8 is less
than 9 so no shifting takes place and the comparing loop terminates. So the element 9 is
added at the rightmost end of the sorted subpart. After second pass the status of the
collection is:
0 1 2 3 4 5 6
5 8 9 3 16 4 7
--------Sorted------- -----------Unsorted-----------

Iteration3: In 3rd pass, 3 is compared with 9, 8 and 5 and therefore, shift will take place one position
towards right and insert 3 at position a[0]. After third pass the status of the collection is:
0 1 2 3 4 5 6
3 5 8 9 16 4 7
---------------Sorted----------- -----Unsorted------

Iteration4: In 4th pass, 16 is greater than the largest number of the sorted subpart so it remains at the
same position in the array. After fourth pass the status of the collection is:

pg. 93
0 1 2 3 4 5 6
3 5 8 9 16 4 7
--------------------Sorted----------------- Unsorted

Iteration5: In 5th pass, 4 is inserted after 3. After fifth pass the status of the collection is:
0 1 2 3 4 5 6
3 4 5 8 9 16 7
-------------------------Sorted----------------------- Unsorted

Iteration6: In 6th pass, 7 is inserted after 5. After fifth pass the status of the array is:
0 1 2 3 4 5 6
3 4 5 7 8 9 16
-------------------------------Sorted----------------------------

Insertion sort takes advantage of sorted(best case) or partially sorted(average case) collection
because if all elements are at their right place then in each pass only one comparison is
required to make sure that the element is at its right position. So for n=7 only 6 (i.e. n-1)
iterations are required and in each iteration only one comparison is required i.e. total number
of comparisons required= (n-1)=6 which is better than other sort methods. Therefore
insertion sort is best suited for sorted or partially sorted arrays.
WAP in Python to accept m distinct integers (in random order) in the list and sort them in ASC order
using Insertion Sort Algorithm.
Solution: OUTPUT
#!List_ InsertionSort.py Enter 7 Integer Elements in the Tuple:
#!List_ InsertionSort.py 8
m=7; L=[] 5
print("Enter", m, "Intrger Elements in the List:") 9
for i in range(0, m, 1): 3
a=int(input()) 16
L.append(a) 4
7
print("Origional List: ", L) Origional List: [8, 5, 9, 3, 16, 4, 7]
List After Iteration 1: [5, 8, 9, 3, 16, 4, 7]
for i in range(1, m): List After Iteration 2: [5, 8, 9, 3, 16, 4, 7]
temp=L[i] List After Iteration 3: [3, 5, 8, 9, 16, 4, 7]
j=i-1 List After Iteration 4: [3, 5, 8, 9, 16, 4, 7]
while(j>=0 and L[j]>temp): List After Iteration 5: [3, 4, 5, 8, 9, 16, 7]
L[j+1]=L[j] List After Iteration 6: [3, 4, 5, 7, 8, 9, 16]
j=j-1
L[j+1]=temp
print("List After Iteration: ",i,L)

WAP in Python to accept m distinct integers (in random order) in the tuple and sort them in ASC order
using Insertion Sort Algorithm.
Solution: OUTPUT
#!Tuple_InsertionSort.py Enter 7 Integer Elements in the Tuple:
#!Tuple_InsertionSort.py 8
pg. 94
m=7; T=tuple() 5
print("Enter", m, "Integer Elements in the Tuple:") 9
for i in range(0, m, 1): 3
a=int(input()) 16
T=T+(a,) 4
7
print("Origional Tuple: ", T) Origional Tuple: (8, 5, 9, 3, 16, 4, 7)
for i in range(1, m): Tuple After Iteration 1 is: (5, 8, 9, 3, 16, 4, 7)
temp=T[i] Tuple After Iteration 2 is: (5, 8, 9, 3, 16, 4, 7)
j=i-1 Tuple After Iteration 3 is: (3, 5, 8, 9, 16, 4, 7)
while(j>=0 and T[j]>temp): Tuple After Iteration 4 is: (3, 5, 8, 9, 16, 4, 7)
T=T[0:j+1] + (T[j],) + T[j+2:] #Shifting element Tuple After Iteration 5 is: (3, 4, 5, 8, 9, 16, 7)
from 'j' to 'j+1' position Tuple After Iteration 6 is: (3, 4, 5, 7, 8, 9, 16)
j=j-1
T=T[0:j+1] +(temp,) + T[j+2:] #Upon exit while-
loop, temp will be stored at 'j+1' position
print("Tuple After Iteration",i,"is:",T)

STRINGS (Immutable Data Types)


The string is an ordered sequence of letters/characters. They are enclosed in single quotes ('') or double
(""). The quotes are not part of string. They only tell the computer where the string literal (or constant)
begins and ends. They can have any character or sign, including space in them.
An individual character in a string is accessed using a subscript (index). The subscript should always be an
integer (positive or negative). A subscript starts from 0.
Declaring a String in Python Consider the given table:
>>> myStr="Save Earth" String A H E L L O
>>> print(myStr)
Save Earth +tive Index 0 1 2 3 4
-tive index -5 -4 -3 -2 -1

Accessing Subscripts Important points about accessing elements in the


>>>print(myStr[0]) #Accessing 1st character strings using subscripts:
S +tive subscript accesses string from beginning
>>>print(myStr[3]) #Accessing 4th character
e -tive subscript accesses string from end
>>>print(myStr[-1]) #Accessing last character Python does not support character data type. A
h string of size 1 can be treated as characters.
>>>print(myStr[-3]) #Accessing 3rd last character
r
Creating and Initializing Strings- A literal or constant value to a string can be assigned using a single quotes
or double quotes or triple quotes.
Enclosing the string in single quotes Enclosing the string in double quotes
>>> print('A friend in need is a friend indeed') >>>print("Champions are not Super Humans.")
A friend in need is a friend indeed Champions are not Super Humans.
>>>print('This book belongs to Raghav\'s sister') >>> print("Work hard to Be \"Successful\".")
This book belongs to Raghav's sister Work hard to Be "Successful".
Note: To include the single quote within the string Note: To include the double quotes within the

pg. 95
it should be preceded by a backslash. string it should be preceded by a backslash.
Enclosing the string in triple quotes
str="""An error does not become truth by reason of multiplied propagation, nor does truth become
error because nobody sees it."""
>>> print(str)
An error does not become truth by reason of multiplied propagation, nor does truth become error
because nobody sees it.
Note: Triple quotes are used when the text is multiline.
Escape sequence- An escape sequences is nothing but a special character that has a specific function. As
shown above, backslash (\) is used to escape the single or double quote.
Escape sequence Meaning Example
\n New line >>> print("Hot\nCold")
Hot
Cold
\t Tab space >>> print("Hot\tCold")
Hot Cold
\' (or \" or \""") Single (or Double or Triple) >>>print('This book belongs to Raghav\'s sister')
quote This book belongs to Raghav's sister

Some Important String Functions


Syntax Explanation Example Output
len(str) Returns the length of the string str. str= "Save Earth"
print(len(str)) 10
str.capitalize() Returns the new copy of the string str="welcome"
with the first letter in upper-case. print(str.capitalize()) Welcome
str.lower() Returns the new copy of the string str="WELCOME"
with all letters in lower-case. print(str.lower()) welcome
str.upper() Returns the new copy of the string str="welcome"
with all letters in upper-case. print(str.upper()) WELCOME
str.lstrip([substr]) Returns the new copy of the string str=" welcome"
after removing the space(s) on the print(str.lstrip()) welcome
left of the string. If a substring is str="###welcome" welcome
passed as argument to the lstrip() print(str.lstrip("#")) come
function, it removes those characters str="welwewcome"
from the left of the string. print(str.lstrip("wel"))
str.rstrip([substr]) What lstrip() does to left side of the
string, rstrip() does to the right side of
the string.

String Comparison in Python- To compare two or more string values in Python, one uses comparison (i.e.
relational) operators such as ==, !=, <, <=, >, >=. When comparing values, Python always returns either
"True" or "False" to indicate the result. The format used is "strLitral1 operator strLitral2" or "strVar1

pg. 96
operator strVar2". Python also supports chained comparisons such as a>b>c (i.e. a>b and b>c). There are
some functions used for comparison. See the table below:

Some Important Functions Used for String Comparison:


Syntax Explanation Example Output
str.isalnum() Returns True, if str is made of alphabets print('Save Earth'.isalnum()) False
and digits(0-9) only, False otherwise. print('Save1Earth'.isalnum()) True
str.isalpha() Returns True, if str is made of alphabets print('Save Earth'.isalpha()) False
only, False otherwise. print('SaveEarth'.isalpha()) True
str.isdecimal() Returns True, if str is made of decimal print('375'.isdecimal()) True
integers(no fractions) only, False print('375.67'.isdecimal()) False
otherwise.
str.isdigit() Returns True, if str is made of digits(0-9) print('375'.isdigit()) True
only, False otherwise. print('375.67'.isdigit()) False
str.isnumeric() Returns True, if str is made of decimal print('375'.isnumeric()) True
integers(no fractions) only, False print('375.67'.isnumeric()) False
otherwise.
str.islower() Returns True, if str is made of lower-case print('abc'.islower()) True
alphabets only, False otherwise. print('aBc'.islower()) False
str.isupper() Returns True, if str is made of upper-case print('ABC'.isupper()) True
alphabets only, False otherwise. print('AbC'.isupper()) False
str.isspace() Returns True, if str contains only white print(' '.isspace()) True
spaces and False even if it contains one print(' A'.isspace()) False
character other than white space.
str.istitle() Returns True if str is title cased. print('Work Hard'.istitle()) True
Otherwise returns Fals.e print('Work hard'.istitle()) False

String Concatenation (+, * operators)-


This process of combining strings is referred to as concatenation. For instance, one string is "Hello" and the
other is "World". When concatenation is used to combine them it becomes one string, or "HelloWorld".
Similarly, when a string is to be repeatedly concatenated use the operator '*' as it represent successive '+'
operation. Moreover, a string is to be concatenated with a string only. If one of the operand is not a string,
convert it to the string. See the example below:
print("Hello" + "World" ) OUTPUT
print("Hello" + " " + "World" ) HelloWorld
print("Question No." + str(4)) Hello World
print("Question No." + "4") Question No.4
print("O God!"*4) Question No.4
print("O God! "*4) O God!O God!O God!O God!
O God! O God! O God! O God!
Substrings and Substring Operations-
A part of a string is known as substring in Python. One can slice or split a string into substrings. One can
find a matching substring within a string. Substrings can be concatenated to give rise to new string.
Some Important Functions for Substring Operations

pg. 97
Syntax Explanation Example Output
str[n:m] The slice operator [n:m] extracts substring A="Save Earth"
from str, with starting index n to m-1. print(A[2:6]) ve E
If n is omitted, slice operator works from 0 print(A[:6]) Save E
to m-1. print(A[2:]) ve Earth
If m is omitted, slice operator works from n print(A[:]) Save Earth
to the end of the string.
If n & m both are omitted, slice operator
works from 0 to the end of the string.
str.split([sep[, The function splits the string into str="z#sr#sec#sch"
maxsplit]]) substrings using the separator. The second print(str.split('#')) ['z', 'sr', 'sec', 'sch']
argument is optional and its default value is print(str.split('#',2)) ['z', 'sr', 'sec#sch']
m*1. If an integer value N is given for the print(str.split('s')) ['z#', 'r#', 'ec#', 'ch']
second argument, the string is split in N+1*2 print(str.split('s',1)) ['z#', 'r#sec#sch']
strings.
*1: Number of separators + 1
*2: N+1 !> Number of separators + 1
find(sub[, The function is used to search the first str='mammals'
start[, end]]) occurrence of the substring in the given print(str.find('ma')) 0
string. It returns the index at which the print(str.find('ma',2)) 3
substring starts. It returns -1 if the print(str.find('ma',2,4)) -1
substring does occur in the string. print(str.find('ma',2,5)) 3
re.search(str, The search function traverses through the See Qn No. 7 under "SOLVED EXAMOLE ON
gstr) string and determines the position where STRINNGS"
the str matches the gstr.
str.replace(old, The function replaces all the occurrences of str="HELLO"
new) the old string with the new string print(str.replace('L','#')) HE##O
print(str.replace('L','**')) HE****O
sepstr.join(tuple) Returns a string in which the tuple tstr=('jan', 'feb' ,'mar')
elements (each element is a string) have print('*'.join(tstr)) jan*feb*mar
been joined by a separator string.

NOTION OF STATES AND TRANSITIONS USING STATE TRANSITION DIAGRAMS


Some Key Words Used Under This Topic-
Event- An occurrence that may trigger a State- A situation during an object’s life in which it satisfies
state transition. Event types include an some condition, performs some action, or waits for some event.
explicit signal from outside the system, Guard- A boolean expression which, if true, enables an event to
an invocation from inside the system, cause a transition.
the passage of a designated period of Transition- The change of state for an object.
time, or a designated condition Action- One or more actions taken by an object in response to a
becoming true. state change.
State Transition Diagram (STD)- A program in Object Oriented Paradigm requires defining classes and

pg. 98
declaring objects. Objects change its state during different
functions/actions performed on objects. In state transition
diagram it is represented that what actions are there
which leads to change the state of the object. There are
some symbols used in design of STD, given at RHS:

Example of State Transition Diagram (STD)


Case Study- In a web-based application a user searches
other users and after getting search complete, user can
send the friend request to other users. If the request is acc-
epted, then both users are added to the friend list of each other. If the one user does not accept the friend
request, the second user can send another friend's request. The user can block each other also.
Steps in the Solution-
i) First of all, identify the object that will be created ii) Identify the actions or events.
during the development of classes in OOP.
iii) Identify the possible states for object. iv) Draw the STD using symbols.
From the case-study, one gets answer to these steps as following:
Object- Friends
Actions or Events- Search to add a friend,
add a friend, accept a friend, reject a friend,
again add, block the user and close.
State- Start, the friend added, friend
rejected, user blocked and end.

SOLVED EXAMPLES ON STRINGS


1. WAP in Python to check whether the given string is a OUTPUT
palindrome or not. Enter the String: madam
Solution: String is a Palindrome
#!str_Palindrome.py
str=input("Enter the String: ") Enter the String: Madam
length=len(str) String is not a palindrome
i=0; j=length-1
while (i<j):
if(str[i]==str[j]):
i=i+1
j=j-1
else:
print("String is not a palindrome")
break
else:
print("String is a Palindrome")
2. #WAP to count number of 'p' in the string "pineapple". OUTPUT
#!str_countChar.py 3

pg. 99
word = 'pineapple'
count = 0
for letter in word:
if letter == 'p':
count = count + 1
print(count)
3. #WAP in Python to input a string "Green Revolution". OUTPUT
Print this string in reverse order. Also print the string Enter a String: Green Revolution
after reversing. Printing in Reversed Order: noituloveR
#!str_reversing.py neerG
str=input("Enter a String: ") Printing After Reversing: noituloveR neerG
length=len(str)
print("Printing in Reversed Order: ",end='')
for i in range(1, length+1, 1):
print(str[-i],end='')

revStr=''
for i in range(length, 0, -1):
revStr = str[-i] + revStr
print("\nPrinting After Reversing: ", revStr)
4. WAP in Python to count number of words in a string. OUTPUT
#!Str_CountWords.py Enter a String: Education is a continuous
str=input("Enter a String: ") and creative process
countWord=0 Number of Words: 7
for ch in str:
if ch==' ':
countWord=countWord+1
print("Number of Words:", countWord+1)
5. WAP in Python to split the string at every occurrence OUTPUT
of a blank. There should not be two successive blanks Enter a String: Mr. Amit How are you?
in the string. No punctuation mark should appear in Mr
split word. Amit
#!Str_SplitAtBlankSpaces.py How
str=input("Enter a String: ") are
S='' you
for ch in str:
if ch!=' ':
if ch.isalnum():
S=S+ch
else:
print(S)
S=''
if S !='':
print(S)

6. #Input the string "Successor". WAP in Python to split OUTPUT


the string at every occurrence of the letter 's' and 'S'. Enter a String: Successor

pg. 100
#!Str_SplitAtGivenChar.py ucce
str1=input("Enter a String: ") or
str2=''

for ch in str1:
if ch!='s' and ch!='S':
str2=str2+ch
elif str2!='':
print(str2)
str2=''
if str2 !='':
print(str2)
7. WAP in Python to determine if the given substring is OUTPUT
present in the string. water found at: 6 ,ends at: 11
#!Str_SeachSubString.py
import re
givenstr='Water water everywhere but not a drop to
drink'
substr='water'
search1=re.search(substr,givenstr)
if search1:
startpos=search1.start()
endpos=search1.end()
print(substr,"found at:",startpos,",ends at:", endpos)
else:
print("No match found")
8. WAP in Python to print the following pyramid. OUTPUT
1 1
22 22
333 333
4444 4444
55555 55555
#!Str_PrintPyramid.py
m=6
for i in range(1,m):
for j in range(1,i+1):
print(i, end=' ')
print()
9. Give the output of the following statements OUTPUT
str='Honesty is the best policy' Honesty-is-the-best-policy
str=str.replace(' ', '-')
print(str)
10. WAP in Python to replace each blank with the hyphen OUTPUT
(i.e '-') in the given string. Enter the String: Honesty is the best policy
#!Str_ReplaceBlank New String is: Honesty-is-the-best-policy
str=input("Enter the String: ")
str1=''

pg. 101
for ch in str:
if ch !=' ':
str1=str1 + ch
else:
str1=str1 + '-'
print("New String is:", str1)
11. WAP in Python to print alternate characters in a string. OUTPUT
Input a string of your own choice. Enter the String: Honesty is the best policy
#!Str_PrintAlternateChar Enter index to start: 0
str=input("Enter the String: ") Hnsyi h etplc
start=int(input("Enter Index to start: "))
m=len(str) Enter the String: Honesty is the best policy
for i in range(start,m,2): Enter index Number to start: 1
print(str[i],end=' ') oet stebs oiy
12. WAP in Python to extract m characters either from left OUTPUT
side or right side or from the middle of the given Enter a String: Rosary Sr Sec School
string. Written program must be menu driven. How Many Characters to extract: 4
#!Str_ExtractSubString.py MAIN MENU
gstr=input("Enter a String: ") 1. Extract From Left Side
n=int(input("How Many Characters to extract: ")) 2. Extract From RTight Side
print("\tMAIN MENU\n1. Extract From Left Side\n2. 3. Extract From Middle
Extract From Right Side") Enter Your Choice...1
print("3. Extract From Middle\nEnter Your Choice...", Extracted String is: Rosa
end='')
choice=int(input()) Enter a String: Rosary Sr Sec School
str='' How Many Characters to extract: 4
if choice==1: MAIN MENU
for i in range(0, n): 1. Extract From Left Side
str = str + gstr[i] 2. Extract From Right Side
print("Extracted String is:", str) 3. Extract From Middle
elif choice==2: Enter Your Choice...2
for i in range(-1, -(n+1), -1): Extracted String is: hool
str = gstr[i] + str
print("Extracted String is:", str) Enter a String: Rosary Sr Sec School
elif choice==3: How Many Characters to extract: 6
m=int(input("Enter from which index to start MAIN MENU
extraction: ")) 1. Extract From Left Side
for i in range(m, m+n): 2. Extract From Right Side
str = str + gstr[i] 3. Extract From Middle
print("Extracted String is:", str) Enter Your Choice...3
Enter from which index to start extraction:
7
Extracted String is: Sr Sec
13. #Input a string "Python". WAP to print all the letters OUTPUT
except the letter "y". Enter the String: python
#!Str_DispLetters.py pthon
str=input("Enter the String: ") Newly Created String: pthon

pg. 102
str1=''
for ch in str:
if ch !='y' and ch != 'Y':
print(ch, end='')
str1=str1+ch #New string created that contains all
letters but 'y'
print("\nNewly Created String: ",str1)

INTRODUCTION TO PYTHON MODULES (ONLY FOR IP STUDENTS)


Creating (i.e. writing) a Module in Python
A module is a Python file (i.e. .py) containing Python definitions of functions, classes and variables that can
be utilized in other Python programs.
Creating a module is just like writing any other Python file. Let us start by creating a file "hello.py" that we
will later import into another file.
hello.py
# Following is a definition of a function named as world()
def world():
print("Hello, World!")

# Following is a definition of a variable


teacher = "Mr. Sammy, How are you?"
If we run this program on the command line with python hello.py nothing will happen since we have not
told the program to do anything.
Let us create a second file in the same directory called "main_program.py" so that we can import the
module we just created, and then call the function. This file needs to be in the same directory so that
Python knows where to find the module since it is not a built-in module.
main_program.py
# import hello module OUTPUT
import hello Hello, World!
#Call function using syntax <moduleName>.<functionName>() Mr. Sammy, How are you?
hello.world()

# print the variable teacher using print() statement


print(hello.teacher)
We could instead import the module as from hello import world and call the function directly as world().
We will learn this later.
It is important to keep in mind that though modules are often definitions, they can also implement code.
To see how this works, let us rewrite our "hello.py" file so that it implements the world() function:
hello.py
# Following is a definition of a function named as world()
def world():
print("Hello, World!")

# Call function within module


world()
Now, in our "main_program.py" file, we will delete every line except for the import statement:
main_program.py
# import hello module OUTPUT
pg. 103
import hello Hello World
This output because the hello module implemented the world() function which is then passed to
main_program.py and executes when main_program.py runs.

More on Importing a Module in Python


Standard library of Python is extended as module(s) to programmers. Definitions from the module can be
used within the code of a program.

To use these modules in the program, a programmer needs to import the module. Once you import a
module, you can reference (use), any of its functions or variables in your code. Following are two ways to
import a module in a program:
The import statement is simplest and most common way to use modules in our code. Its syntax is:
import modulename1 [,modulename2, …, ,…, modulenamem]
Example-
import math
On execution of this statement, Python will
i) Search for the file 'math.py'.
ii) Create space where modules definition & variable will be created,
iii) Then execute the statements in the module.
Now the definitions of the module will become part of the code in which the module was imported.
To use/ access/invoke a function, you will specify the module name and name of the function- separated
by dot (.). This format is also known as dot notation.
Example- value= math.sqrt (25) # dot notation
The example uses sqrt( ) function of module math to calculate square root of the value provided in
parenthesis, and returns the result which is inserted in the value. The expression (variable) written in
parenthesis is known as argument (actual argument). It is common to say that the function takes
arguments and return the result.
The form statement is used to get a specific function in the code instead of the complete module file. If we
know beforehand which function(s), we will be needing, then we may use form. For modules having large
number of functions, it is recommended to use from instead of import. Its syntax is
from modulename import functionname1 [, functionname2, …, ,…, functionnamem ]
Example- from math import sqrt
value = sqrt (25)
Here, we are importing sqrt function only, instead of the complete math module. Now sqrt( ) function will
be directly referenced to. These two statements are equivalent to previous example.
from modulename import *
will import everything from the file.
Note: You normally put all import statement(s) at the beginning of the Python file but technically they can
be anywhere in program but before the use.

Functions available in math module:


Function Description Example Returned Value
Name
ceil( x ) It returns the smallest integer not less math.ceil(-45.17) -45.0
than x, where x is a numeric expression. math.ceil(100.12) 101.0
math.ceil(100.72) 101.0

pg. 104
floor( x ) It returns the absolute value of x, where x math.fabs(-45.17) 45.17
is a numeric value. math.fabs(100.12) 100.12
math.fabs(100.72) 100.72
fabs( x ) It returns the absolute value of x, where x math.fabs(-45.17) 45.17
is a numeric value. math.fabs(100.12) 100.12
math.fabs(100.72) 100.72
exp( x ) It returns exponential of x: ex, where x is math.exp(-45.17) 2.41500621326e-20
a numeric expression. math.exp(100.12) 3.03084361407e+43
math.exp(100.72) 5.52255713025e+43
log( x ) It returns natural logarithm of x, for x > 0, math.log(100.12) 4.60636946656
where x is a numeric expression. math.log(100.72) 4.61234438974
log10( x ) It returns base-10 logarithm of x for x > 0, math.log10(100.12) 2.00052084094
where x is a numeric Expression. math.log10(100.72) 2.0031157171
pow( x, y) It returns the value of xy, where x and y math.pow(100, 2) 10000.0
are numeric expressions. math.pow(100, -2) 0.0001
math.pow(2, 4) 16.0
math.pow(3, 0) 1.0
sqrt (x ) It returns the square root of x for x > 0, math.sqrt(100) 10.0
where x is a numeric expression. math.sqrt(7) 2.64575131106
cos (x) It returns the cosine of x in radians, math.cos(3) -0.9899924966
where x is a numeric expression math.cos(-3) -0.9899924966
math.cos(0) 1.0
math.cos(math.pi) -1.0
sin (x) It returns the sine of x, in radians, where math.sin(3) 0.14112000806
x must be a numeric value. math.sin(-3) -0.14112000806
math.sin(0) 0.0
tan (x) It returns the tangent of x in radians, math.tan(3) -0.142546543074
where x must be a numeric value. math.tan(-3) 0.142546543074
math.tan(0) 0.0
degrees (x) It converts angle x from radians to math.degrees(3) 171.887338539
degrees, where x must be a numeric math.degrees(-3) -171.887338539
value. math.degrees(0) 0.0
radians(x) It converts angle x from degrees to math.radians(3) 0.0523598775598
radians, where x must be a numeric math.radians(-3) -0.0523598775598
value. math.radians(0) 0.0

Functions available in random module:


Function Description Example Returned Value
Name
random() It returns a random float x, such that 0 ≤ random.random() 0.281954791393
x<1 random.random() 0.309090465205
randint(a,b) It returns a int x between a & b such that random.randint (1,10) 5

pg. 105
a≤x≤b random.randint (-2,20) -1
uniform(a,b) It returns a floating point number x, such random.uniform (5,10) 5.52615217015
that a <= x < b
randrange It returns a random item from the given random.randrange(100 150
([start,] stop range ,1000,3)
[,step])

pg. 106

Vous aimerez peut-être aussi