Chapter 6 - Conditional Expressions: Syntax

Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Chapter 6 – Conditional Expressions

Sometimes we want to play pubg on our phone if the day is Sunday.

Sometimes we order Ice-cream online if the day is sunny.

Sometimes we go hiking if our parents allow.

All these are decisions that depend on the condition being met.

In python programming too, we must be able to execute instructions on


a condition(s) being met. This is what conditions are for!

If else and elif in Python

If else and elif statements are a multiway decision taken by our program
due to certain conditions in our code.

Syntax:
'''
if (condition1): // if condition 1 is true
print(“yes”)
elif (condition2): // if condition 2 is true
print(“No”)
else: // otherwise
print(“May be”)
'''
Copy
Code example:
a = 22
if (a>9):
print(“Greater”)
else:
print(“lesser”)
Copy
Quick Quiz: Write a program to print yes when the age entered by the
user is greater than or equal to 18.

Relational Operators
Relational operators are used to evaluate conditions inside if statements.
Some examples of relational operators are:

= = -> equals

>= -> greater than/equal to

<=, etc.
Copy

Logical Operators

In python, logical operators operate on conditional statements. Example:

and -> true if both operands are true else false

or -> true if at least one operand is true else false

not -> inverts true to false and false to true


Copy

elif clause

elif in python means [else if]. If statement can be chained together with a
lot of these elif statements followed by an else statement.

'''
if (condition1):
#code
elif (condition 2):
#code
elif (condition 2):
#code
….
else:
#code '''
Copy

• The above ladder will stop once a condition in an if or elif is met.


Important Notes:

• There can be any number of elif statements.


• Last else is executed only if all the conditions inside elifs fail.

Chapter 6 – Practice Set

1. Write a program to find the greatest of four numbers entered by


the user.
2. Write a program to find out whether a student is pass or fail if it
requires a total of 40% and at least 33% in each subject to pass.
Assume 3 subjects and take marks as an input from the user.
3. A spam comment is defined as a text containing the following
keywords:

“make a lot of money”, “buy now”, “subscribe this”, “click this”. Write a
program to detect these spams.

4. Write a program to find whether a given username contains less


than 10 characters or not.
5. Write a program that finds out whether a given name is present in
a list or not.
6. Write a program to calculate the grade of a student from his marks
from the following scheme:

90-100 Ex
80-90 A
70-80 B
60-70 C
50-60 D
<50 F

7. Write a program to find out whether a given post is talking about


“Harry” or not.

Chapter 7 – Loops in Python


Sometimes we want to repeat a set of statements in our program. For
instance: Print 1 to 1000

Loops make it easy for a programmer to tell the computer, which set of
instructions to repeat, and how!

Types of loops in Python


Primarily there are two types of loops in Python

1. While loop
2. For loop

We will look into this one by one!

While loop

The syntax of a while loop looks like this:

''' while condition:


#Body of the loop '''
Copy

• The block keeps executing until the condition is true/false

In while loops, the condition is checked first. If it evaluates to true, the


body of the loop is executed, otherwise not!

If the loop is entered, the process of condition check and execution is


continued until the condition becomes false.

Quick Quiz: Write a program to print 1 to 50 using a while loop.

An Example:

i = 0
while i<5:
print(“Harry”)
i = i+1
Copy
(Above program will print Harry 5 times)

Note: if the condition never becomes false, the loop keeps getting
executed.

Quick Quiz: Write a program to print the content of a list using while
loops.

For loop

A for loop is used to iterate through a sequence like a list, tuple, or string
(iterables)
The syntax of a for loop looks like this:
l = [1, 7, 8]
for item in l:
print(item)
Copy
(Above program will print 1, 7, and 8)

Range function in Python

The range function in python is used to generate a sequence of


numbers.

We can also specify the start, stop, and step-size as follows:

range(start, stop, step_size)

• step size is usually not used with range()

An example demonstrating range() function

for i in range(0, 7): #range(7) can also be used


print(i) #prints 0 to 6
Copy

For loop with else

An optional else can be used with a for loop if the code is to be executed
when the loop exhausts.

Example:
l = [1, 7, 8]
for item in l:
print(item)
else:
print(“Done”) #This is printed when the loop exhausts!
Copy
Output:

1
7

Done
Copy

The break statement

‘break’ is used to come out of the loop when encountered. It instructs the
program to – Exit the loop now.

Example:

for i in range(0, 80):


print(i) #This will print 0, 1, 2 and 3
if i == 3:
break
Copy

The continue statement

‘continue’ is used to stop the current iteration of the loop and continue
with the next one. It instructs the program to “skip this iteration.”

Example:
for i in range(4):
print(“printing”)
if i == 2: #if i is 2, the iteration is skipped
continue
print(i)
Copy

pass statement

pass is a null statement in python. It instructs to “Do nothing.”

Example:
l = [1, 7, 8]
for item in l:
pass #without pass, the program will throw an error
Copy

Chapter 7 – Practice Set

1. Write a program to print the multiplication table of a given number


using for loop.
2. Write a program to greet all the person names stored in a list l1
and which starts with S.
l1 = [“Harry”, “Sohan”, “Sachin”, “Rahul”]
Copy

3. Attempt problem 1 using a while loop.


4. Write a program to find whether a given number is prime or not.
5. Write a program to find the sum of first n natural numbers using a
while loop.
6. Write a program to calculate the factorial of a given number using
for loop.
7. Write a program to print the following star pattern.
*

***

***** for n=3


Copy

8. Write a program to print the following star pattern:


*

**

*** for n = 3
Copy

9. Write a program to print the following star pattern:


* * *
* * #For n=3
* * *
Copy
10. Write a program to print the multiplication table of n using for loop
in reversed order.

Chapter 8 – Functions and Recursions


A function is a group of statements performing a specific task.

When a program gets bigger in size and its complexity grows, it gets
difficult for a programmer to keep track of which piece of code is doing
what!

A function can be reused by the programmer in a given program any


number of times.

Example and Syntax of a function

The syntax of a function looks as follows:


def func1():
print(“Hello”)
Copy
This function can be called any number of times, anywhere in the
program.

Function call

Whenever we want to call a function, we put the name of the function


followed by parenthesis as follows:

func1() #This is called function call


Copy
Function definition

The part containing the exact set of instructions that are executed during
the function call.

Quick Quiz: Write a program to greet a user with “Good day” using
functions.

Types of functions in Python

There are two types of functions in Python:


1. Built-in functions #Already present in Python
2. User-defined functions #Defined by the user

Examples of built-in function includes len(), print(), range(), etc.

The func1() function we defined is an example of a user-defined


function.

Functions with arguments

A function can accept some values it can work with. We can put these
values in the parenthesis. A function can also return values as shown
below:

def greet(name):
gr = “Hello” + name
return gr
Copy
a = greet(“Harry”) #“Harry” is passed to greet in name

# a will now contain “Hello Harry”


Copy
Default Parameter Value

We can have a value as the default argument in a function.

If we specify name = “stranger” in the line containing def, this value is


used when no argument is passed.

For Example:

def greet(name=’stranger’):
#function body
Copy
greet() #Name will be ‘stranger’ in function
body(default)

greet(“Harry”) #Name will be “Harry” in function body(passed)


Copy

Recursion
Recursion is a function which calls itself.

It is used to directly use a mathematical formula as a function. For


example:

factorial(n) = n * factorial(n-1)
Copy
This function can be defined as follows:

def factorial(n):
if i == 0 or i == 1 : #Base condition which doesn’t call the
function any further
return i
else:
return n*factorial(n-1) #Function calling itself
Copy
This works as follows:

The programmer needs to be extremely careful while working with


recursion to ensure that the function doesn’t infinitely keep calling itself.

Recursion is sometimes the most direct way to code an algorithm.

Chapter 8 – Practice Set

1. Write a program using the function to find the greatest of three


numbers.
2. Write a python program using the function to convert Celsius to
Fahrenheit.
3. How do you prevent a python print() function to print a new line at
the end?
4. Write a recursive function to calculate the sum of first n natural
numbers.
5. Write a python function to print the first n lines of the following
pattern.
***

** #For n = 3
*
Copy

6. Write a python function that converts inches to cms.


7. Write a python function to remove a given word from a list and strip
it at the same time.
8. Write a python function to print the multiplication table of a given
number.

Project 1: Snake, Water, Gun Game


We all have played snake, water gun game in our childhood. If you
haven’t, google the rules of this game and write a Python program
capable of playing this game with the user.

Chapter 9 – File I/O


The random access memory is volatile, and all its contents are lost once
a program terminates.

In order to persist the data forever, we use files.

A file is data stored in a storage device. A python program can talk to the
file by reading content from it and writing content to it.

Types of Files

There are 2 types of files:

1. Text files (.txt, .c, etc)


2. Binary files (.jpg, .dat, etc)

Python has a lot of functions for reading, updating, and deleting files.

Opening a file

Python has an open() function for opening files. It takes 2 parameters:


filename and mode.
open(“this.txt”, “r”)
Copy
Here, “this” is the file name and “r” is the mode of opening (read mode)

Reading a file in Python

f = open(“this.txt”, “r”) #Opens the file in r mode

text = f.read() #Read its content

print(text) #Print its contents

f.close() #Close the fie


Copy
We can also specify the number of characters in read() function:

f.read(2) #Reads first 2 characters


Copy
Other methods to read the file

We can also use f.readline() function to read one full line at a time.
f.readline() #Reads one line from the file
Copy
Modes of opening a file

r – open for reading

w – open for writing

a – open for appending

+ -> open for updating

‘rb’ will open for read in binary mode

‘rt’ will open for read in text mode

Writing Files in Python

In order to write to a file, we first open it in write or append mode, after


which, we use the python’s f.write() method to write to the file!
f = open(“this.txt”, “w”)
f.write(“This is nice”) #Can be called multiple times

f.close()
Copy
With statement

The best way to open and close the file automatically is the “with”
statement.

with open(“this.txt”) as f:

f.read()
Copy
#There is no need to write f.close() as it is done automatically

Chapter 9 – Practice Set

1. Write a program to read the text from a given file, “poems.txt” and
find out whether it contains the word ‘twinkle’.
2. The game() function in a program lets a user play a game and
returns the score as an integer. You need to read a file
“Hiscore.txt” which is either blank or contains the previous Hi-
score. You need to write a program to update the Hi-score
whenever game() breaks the Hi-Score.
3. Write a program to generate multiplication tables from 2 to 20 and
write it to the different files. Place these files in a folder for a 13-
year old boy.
4. A file contains the word “Donkey” multiple times. You need to write
a program which replaces this word with ###### by updating the
same file.
5. Repeat program 4 for a list of such words to be censored.
6. Write a program to mine a log file and find out whether it contains
‘python’.
7. Write a program to find out the line number where python is
present from question 6.
8. Write a program to make a copy of a text file “this.txt.”
9. Write a program to find out whether a file is identical and matches
the content of another file.
10. Write a program to wipe out the contents of a file using
python.
11. Write a python program to rename a file to
“renamed_by_python.txt.”

Chapter 10 – Object-Oriented Programming


Solving a problem by creating objects is one of the most popular
approaches in programming. This is called object-oriented programming.

This concept focuses on using reusable code. (Implements DRY


principle)

Class

A class is a blueprint for creating objects.

The syntax of a class looks like this:


Class Employee: [classname is written in PascalCase]
#methods & variables
Copy

Object

An object is an instantiation of a class. When class is defined, a


template(info) is defined. Memory is allocated only after object
instantiation.

Objects of a given class can invoke the methods available to it without


revealing the implementation details to the user. #Abstraction &
Encapsulation!

Modelling a problem in OOPs

We identify the following in our problem

Noun -> Class -> Employee

Adjective -> Attributes -> name,age,salary

Verbs -> Methods -> getSalary(), increment()

Class Attributes
An attribute that belongs to the class rather than a particular object.

Example:

Class Employee:
company = “Google” #Specific to each class
harry = Employee() #Object instantiation
harry.company
Employee.company = “YouTube” #changing class attribute
Copy
Instance Attributes

An attribute that belongs to the Instance (object)

Assuming the class from the previous example:


harry.name = “Harry”
harry.salary = “30K” #Adding instance attributes
Copy
Note: Instance attributes take preference over class attributes during
assignment and retrieval.

harry.attribute1 :

1. Is attribute1 present in the object?


2. Is attribute1 present in class?

‘self’ parameter

self refers to the instance of the class.

It is automatically passed with a function call from an object.

harry.getSalary()
Copy
here, self is harry, and the above line of code is equivalent to
Employee.getSalary(harry)

This function getsalary is defined as:


class Employee:
company = “Google”
def getSalary(self):
print(“Salary is not there”)
Copy
Static method

Sometimes we need a function that doesn’t use the self-parameter. We


can define a static method like this:
@staticmethod #decorator to mark greet as a static method
def greet():
print(“Hello user”)
Copy
__init__() constructor

__init__() is a special method which runs as soon as the object is


created.

__init__() method is also known as constructor.

It takes self-argument and can also take further arguments.

For Example:

class Employee:
def __init__(self,name):
self.name = name
def getSalary(self):
#Some code…
harry = Employee(“Harry”) #Object can be instantiated using
constructor like this!
Copy

Chapter 10 – Practice Set

1. Create a class programmer for storing information of a few


programmers working at Microsoft.
2. Write a class calculator capable of finding square, cube, and the
square root of a number.
3. Create a class with a class attribute a; create an object from it and
set a directly using object.a=0 Does this change the class
attribute?
4. Add a static method in problem 2 to greet the user with hello.
5. Write a class Train which has methods to book a ticket, get
status(no of seats), and get fare information of trains running under
Indian Railways.
6. Can you change the self parameter inside a class to something
else (say ‘harry’)? Try changing self to ‘slf’ or ‘harry’ and see the
effects.

Chapter 11 – Inheritance & more on OOPs


Inheritance is a way of creating a new class from an existing class.

Syntax:

class Emoloyee: #Base Class


#Code
class Programmer(Employee): #Derived or child class
#Code
Copy
We can use the methods and attributes of Employee in Programmer
object.

Also, we can overwrite or add new attributes and methods in the


Programmer class.

Type of Inheritance

1. Single inheritance
2. Multiple inheritance
3. Multilevel inheritance

Single Inheritance

Single inheritance occurs when a child class inherits only a single parent
class.

Base -> Derived

Multiple Inheritance

Multiple inheritances occurs when the child class inherits from more than
one parent class.
Multilevel Inheritance

When a child class becomes a parent for another child class.

Super() method

Super method is used to access the methods of a superclass in the


derived class.

super().__init__() #Calls constructor of the base class


Copy
Class methods

A class method is a method which is bound to the class and not the
object of the class.

@classmethod decorator is used to create a class method.

Syntax to create a class method:


@classmethod
def (cls, p1, p2):
#code
Copy
@property decorators

Consider the following class

class Employee:
@property
def name(self):
return self.ename
Copy
if e = Employee() is an object of class employee, we can print (e.name)
top print the ename/call name() function.

@.getters and @.setters


The method name with @property decorator is called getter method.

We can define a function + @name.setter decorator like below:

@name.setter
def name(self, value):
self.ename = value
Copy
Operator overloading in Python

Operators in python can be overloaded using dunder methods.

These methods are called when a given operator is used on the objects.

Operators in python can be overloaded using the following methods:


p1 + p2 -> p1.__add__(p2)

p1 – p2 -> p1.__sub__(p2)

p1 * p2 -> p1.__mul__(p2)

p1 / p2 -> p1.__truediv__(p2)

p1 // p2 -> p1.__floordiv__(p2)
Copy
Other dunder/magic methods in Python
__str__() -> used to set what gets displayed upon calling str(obj)

__len__() -> used to set what gets displayed upon calling .__len__()
or len(obj)
Copy

Chapter 11 – Practice Set

1. Create a class C-2d vector and use it to create another class


representing a 3-d vector.
2. Create a class of pets from a class Animals and further create
class Dog from Pets. Add a method bark to class Dog.
3. Create a class Employee and add salary and increment properties
to it.

Write a method SalaryAfterIncrement method with a @property


decorator with a setter which changes the value of increment based on
the salary.

4. Write a class complex to represent complex numbers, along with


overloaded operators + and * which adds and multiplies them.
5. Write a class vector representing a vector of n dimension.
Overload the + and * operator which calculates the sum and the
dot product of them.
6. Write __str__() method to print the vector as follows:

7i + 8j + 10k
Copy
Assume vector of dimension 3 for this problem.

7. Override the __len__() method on vector of problem 5 to display


the dimension of the vector.

Project 2: Snake, Water, Gun Game


We are going to write a program that generates a random number and
asks the user to guess it.

If the player’s guess is higher than the actual number, the program
displays “Lower number please”. Similarly, if the user’s guess is too low,
the program prints “higher number please”.

When the user guesses the correct number, the program displays the
number of guesses the player used to arrive at the number.

Hint: Use the random module

You might also like