Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
110 views

Python Without Explanation

Python variables can store data of different types. The main built-in data types are numeric, text, list, dictionary, and boolean. Variables are created using an equal sign and can be assigned values of different data types. Python also supports global variables that can be accessed inside and outside of functions. Comments are used to explain Python code and are prefixed with a hash symbol.

Uploaded by

Jeff Obiechina
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views

Python Without Explanation

Python variables can store data of different types. The main built-in data types are numeric, text, list, dictionary, and boolean. Variables are created using an equal sign and can be assigned values of different data types. Python also supports global variables that can be accessed inside and outside of functions. Comments are used to explain Python code and are prefixed with a hash symbol.

Uploaded by

Jeff Obiechina
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 337

Python Variables Con

Python Power Point Presentation


Python Introduction

What is Python?

What can Python do?


Python Introduction
Contd

Why should Python be used over other programming laguages?

Python Syntax compared to other programming languages


Python Install
Python Syntax - Indentation
Python Comments

What are comments


How are comments created
What are the types of comments
What are the advantages of using comments
Python Variables

What are python variables


How are variables created
What are the rules you need to follow when choosing a name for your variable
Variable names with more than one word can be difficult to read.
There are several techniques you can use to make them more readable. These
techniques include.

ASSIGNING VARIABLES
How do you assign a value to a variable
How do you assign multiple values to multiple variables
How do you assign the same value to multiple variables
Python Output Variables

The Python print() function is often used to output variables.

In the print() function, you output multiple variables, separated by a comma by doing


_______

You can also use the + operator to output multiple variables by doing


__________
Python Global Variables

What are Global Variables


When you want to make a local variable a local variable we use?
Python Variables Con

Python Data Types


Python Data Types

What Are Built-in Data Types?

Python has the following data types built-in by default, in these categories:

Text Type: str

Numeric Types: int, float, complex

Sequence Types: list, tuple, range

Mapping Type: dict

Set Types: set, frozenset

Boolean Type: bool

Binary Types: bytes, bytearray, memoryview


Python Data Types Contd
Getting the Data Type
Python Data Types Contd

Example Data Type


x = "Hello World" str

x = 20 int

x = 20.5 float

x = 1j complex

x = ["apple", "banana", "cherry"] list

x = ("apple", "banana", "cherry") tuple

x = range(6) range
Python Data Types Contd

x = {"name" : "John", "age" : 36} dict

x = {"apple", "banana", "cherry"} set

x = frozenset({"apple", "banana", frozenset


"cherry"})

x = True bool

x = b"Hello" bytes

x = bytearray(5) bytearray

x = memoryview(bytes(5)) memoryview
Python Data Types Contd

Setting the Specific Data Type

If you want to specify the data type, you can use the following constructor functions:

Example Data Type

x = str("Hello World") str

x = int(20) int

x = float(20.5) float

x = complex(1j) complex
Python Data Types Contd
x = list(("apple", "banana", "cherry")) list

x = tuple(("apple", "banana", "cherry")) tuple

x = range(6) range
x = dict(name="John", age=36) dict

x = set(("apple", "banana", "cherry")) set

x = frozenset(("apple", "banana", frozenset


"cherry"))

x = bool(5) bool
x = bytes(5) bytes
x = bytearray(5) bytearray
x = memoryview(bytes(5)) memoryview
Python Numbers
Python Numbers
Python Numbers

There are three numeric types in Python:


Python Numbers Contd
What is an Integer
Give examples of integers
Python Numbers Contd
What is a Float
Give examples of Floats
Python Numbers Contd
What is a Complex number
Give examples of Complex numbers
Python Casting
Python Casting
Specify a Variable Type
There may be times when you want to specify a type on to a variable. This can be done
with casting.
What is casting
How is casting done
Python Strings
Python Strings

What are String Literals


How are strings created
What are the types of Strings
Python Strings Contd
Strings are Arrays which means you can assess a character or a group of
characters in the string
Give a few examples
Python Strings Contd
Check String
To check if a certain phrase or character is present in a string, we can use the
keyword in.

Explain The ‘ in ’ Keyword

Give Examples
Python Strings Contd
Check if NOT
To check if a certain phrase or character is NOT present in a string, we can use the
keyword not in.

Explain The IF NOT keyword

Use It In Examples
Python Strings Contd
What is slicing
How do you slice a string
Give examples of slicing with positive indexing
Give examples of slicing with negative indexing
Python Strings Contd
How do you Slice To the End of the string
Python Strings Contd
Python - Modify Strings

Upper Case

Lower Case

Remove Whitespace

Replace String

Split String

String Concatenation
Python Strings Contd
Python - Format - Strings
String Format
Python Strings Contd
The format() method takes unlimited number of arguments, and are placed into the
respective placeholders:

Example
quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))

You can use index numbers {0} to be sure the arguments are placed in the correct
placeholders:
Example
quantity = 3
itemno = 567
price = 49.95
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))
Python Strings Contd
Python - Escape Characters
Escape Character
Python Methods
Method Description

capitalize() Converts the first character to upper case


casefold() Converts string into lower case
center() Returns a centered string
count() Returns the number of times a specified value occurs in a
string
encode() Returns an encoded version of the string
endswith() Returns true if the string ends with the specified
value
expandtabs() Sets the tab size of the string
find() Searches the string for a specified value and returns the
position of where it was found
format() Formats specified values in a string
Python Methods
Method Description
format_map() Formats specified values in a string
index() Searches the string for a specified value and
returns the position of where it was found
isalnum() Returns True if all characters in the string are
alphanumeric
isalpha() Returns True if all characters in the string are
in the alphabet
isdecimal() Returns True if all characters in the string are
decimals
isdigit() Returns True if all characters in the string are
digits
isidentifier() Returns True if the string is an identifier
islower() Returns True if all characters in the string are
lower case
isnumeric() Returns True if all characters in the string are
numeric
Python Methods
Method Description
isprintable() Returns True if all characters in the string are
printable
isspace() Returns True if all characters in the string are
whitespaces
istitle() Returns True if the string follows the rules of
a title
isupper() Returns True if all characters in the string are
upper case
join() Joins the elements of an iterable to the end of
the string
ljust() Returns a left justified version of the string
lower() Converts a string into lower case
lstrip() Returns a left trim version of the string
maketrans() Returns a translation table to be used in
translations
Python Booleans
Booleans represent one of two values: True or False.

Give examples of expressions that represent Boolean values

Talk about the bool constructor function


Give an example of values that return the value True
Give an example of values that return the value False
Python Operators

What are operators


Python divides the operators in the following groups:
 Arithmetic operators
 Assignment operators
 Comparison operators
 Logical operators
 Identity operators
 Membership operators
 Bitwise operators
Explain all the operators
Python Arithmetic Operators
Arithmetic operators are used with numeric values to perform common mathematical operations:

Operator Name Example

+ Addition x+y

- Subtraction x-y

* Multiplication x*y

/ Division x/y

% Modulus x%y

** Exponentiation x ** y

// Floor division x // y
Python Assignment Operators

Assignment operators are used to assign values to variables:


Operator Example Same As

= x=5 x=5

+= x += 3 x=x+3

-= x -= 3 x=x-3

*= x *= 3 x=x*3

/= x /= 3 x=x/3

%= x %= 3 x=x%3

//= x //= 3 x = x // 3

**= x **= 3 x = x ** 3

&= x &= 3 x=x&3

|= x |= 3 x=x|3

^= x ^= 3 x=x^3

>>= x >>= 3 x = x >> 3


Python Comparison Operators
Comparison operators are used to compare two values:

Operator Name Example

== Equal x == y

!= Not equal x != y

>  Greater than x>y

<  Less than x<y

>= Greater than or equal to x >= y

<= Less than or equal to x <= y


Python Logical Operators
Python Logical Operators:
Operator Description Example

and  Returns True if both statements are true x < 5 and  x < 10

or Returns True if one of the statements is true x < 5 or x < 4

not Reverse the result, returns False if the result is true not(x < 5 and x < 10)
Python Identity Operators

Identity operators are used to compare the objects, not if they are equal, but if they are actually the
same object, with the same memory location:

Operator Description Example

is  Returns True if both variables are the same object x is y

is not Returns True if both variables are not the same x is not y
object
Python Membership Operators
Membership operators are used to test if a sequence is presented in an object:

Operator Description Example

in  Returns True if a sequence with the specified value is present x in y


in the object

not in Returns True if a sequence with the specified value is not x not in y
present in the object
Python Bitwise
Operators
Bitwise operators are used to compare (binary) numbers:

Operator Name Description

&  AND Sets each bit to 1 if both bits are 1

| OR Sets each bit to 1 if one of two bits is 1

 ^ XOR Sets each bit to 1 if only one of two bits is 1

~  NOT Inverts all the bits

<<  Zero fill left Shift left by pushing zeros in from the right and let the leftmost bits fall off
shift

>>  Signed right Shift right by pushing copies of the leftmost bit in from the left, and let the
shift rightmost bits fall off
Python Lists

mylist = ["apple", "banana", "cherry"]
What are collections
What is a List
What are list properties
List Length
List Items - Data Types

List items can be of any data type:


Give Examples

A list with strings, integers and boolean values:


type()

From Python's perspective, lists are defined as objects with the data type 'list':
<class 'list'>

What is the data type of a list?

The list() Constructor


What does the list() constructor do 
Give An Example
Python Collections (Arrays)

There are four collection data types in the Python programming language
List Them
Acess Items

List items are indexed and you can access them by referring to the index number:
Give An Example

Negative Indexing
Explain Negative Indexing
Give An Example
Range of Indexes
Range of Negative Indexes

Specify negative index

Check if Item Exists


Change Item Value

To change the value of a specific item, refer to the index number:

How Do You Change a Range of Item Values?

Give Examples
What Happens when you insert more items than you replace?

Give Example
.
What happens when you insert less items than you replace?

Give Example
Insert Items

What is the keyword insert() used for?

Use the insert() keyword in an example

How To Append Items?

Give Example
Insert Items

How Do You Extend Lists?

Give Example
Add Any Iterable

How Do You Remove Specified Items?

Give Example
Remove Specified Index

What is the pop() keyword used for?

Use In An Example
Remove Specified Index
(contd)

What is the del keyword used for?

Give Example
Clear the List
What is the  clear() keyword used for?

Give Example

How Do You Loop Through a List?

Give Example
Loop Through the Index
Numbers
What is the use of the range() and len() function

Give Examples in a for loop


Using a While Loop
Looping Using List
Comprehension
What Is List Comprehension?
Give Examples
List Comprehension
List comprehension offers a shorter syntax when you want to create a new list based on the values of an existing
list.

Give Examples
The Syntax
What Are Condition?

Give Examples
The syntax ( contd)
What Are Iterable?

Give Examples

You can use the range() function to create an iterable:

Give Examples
The syntax ( contd)
What Is An Expression?

Give Examples

Set the values in the new list to upper case

The expression can also contain conditions, not like a filter, but as a way to manipulate the
outcome
 
Sort List Alphanumerically
How Do You Sort Lists?

Sort the list alphabetically


thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]

Sort the list numerically


thislist = [100, 50, 65, 82, 23]
Sort Descending
To sort descending, use the keyword argument reverse = True:

Sort the list descending:


thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]

Sort the list descending:


thislist = [100, 50, 65, 82, 23]
Customize Sort Function
You can also customize your own function by using the keyword argument key = function.

Sort the list based on how close the number is to 50

thislist = [100, 50, 65, 82, 23]
Case Insensitive Sort
Reverse Order
What if you want to reverse the order of a list which keyword is used?

Reverse the order of the list items:


thislist = ["banana", "Orange", "Kiwi", "cherry"]
 
Copy a List
Make a copy of a list with the copy() method:
thislist = ["apple", "banana", "cherry"]

Make a copy of a list with the list() method:


thislist = ["apple", "banana", "cherry"]
Join Two Lists
There are several ways to join, or concatenate, two or more lists in Python.
One of the easiest ways are by using the + operator.
Example
Join two list:
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]

list3 = list1 + list2


print(list3)
Another way to join two lists are by appending all the items from list2 into list1, one by one:
Join Two Lists
( contd)

How do you join two lists?

How do you extend lists?


List Methods
Python has a set of built-in methods that you can use on lists.

Method Description

append() Adds an element at the end of the list

clear() Removes all the elements from the list

copy() Returns a copy of the list

count() Returns the number of elements with the specified value

extend() Add the elements of a list (or any iterable), to the end of the current list

index() Returns the index of the first element with the specified value

insert() Adds an element at the specified position

pop() Removes the element at the specified position

remove() Removes the item with the specified value

reverse() Reverses the order of the list


Python Tuples

mylist = ("apple", "banana", "cherry")
What are collections
What is a Tuple
What are tuple properties
Tuple Length
Create Tuple With One Item
To create a tuple with only one item, you have to add a comma after the item, otherwise Python
will not recognize it as a tuple.

 
Tuple Items - Data Types
Tuple items can be of any data type:

Create tuples of Strings, ints and booleans data type

A tuple can contain different data types:

A tuple with strings, integers and boolean values


type()

What Is The tuple() Constructor Used For?


Python Collections (Arrays)
There are four collection data types in the Python programming language:

 List is a collection which is ordered and changeable. Allows duplicate members.


 Tuple is a collection which is ordered and unchangeable. Allows duplicate members.
 Set is a collection which is unordered and unindexed. No duplicate members.
 Dictionary is a collection which is unordered and changeable. No duplicate members.

When choosing a collection type, it is useful to understand the properties of that type. Choosing
the right type for a particular data set could mean retention of meaning, and, it could mean an
increase in efficiency or security.
Access Tuple Items
You can access tuple items by referring to the index number inside square brackets
Range of Indexes
You can specify a range of indexes by specifying where to start and where to end the range.

Return the third, fourth, and fifth item:


thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")
Range of Indexes
( contd)
Range of Negative Indexes
How do you specify negative indexes?

This example returns the items from index -4 (included) to index -1 (excluded)
thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")

How do You Check if Item Exists in a tuple?

Check if "apple" is present in the tuple:


thistuple = ("apple", "banana", "cherry")
Update Tuples
Tuples are unchangeable, meaning that you cannot change, add, or remove items once the tuple
is created.
But there are some workarounds. Give an example.
Add Items
Remove Items
Note: You cannot remove items in a tuple.
Tuples are unchangeable, so you cannot remove items from it, but you can use the same
workaround as we used for changing and adding tuple items:

Remove “apple” from the tuple


thistuple = ("apple", "banana", "cherry")

Or you can delete the tuple completely:

Delete thistuple
thistuple = ("apple", "banana", "cherry")

 
Unpacking a Tuple
What does "packing" a tuple mean?

What does “Unpacking" a tuple mean?


Unpack this tuple:
fruits = ("apple", "banana", "cherry")
Using Asterisk*
If the number of variables is less than the number of values, you can add an * to the variable name
and the values will be assigned to the variable as a list:

Assign the rest of the values as a list called "red":


fruits = ("apple", "banana", "cherry", "strawberry", "raspberry")
Using Asterisk*
( contd)
Add a list of values the "tropic" variable:
fruits = ("apple", "mango", "papaya", "pineapple", "cherry")

(green, *tropic, red) = fruits

print(green)
print(tropic)
print(red)
Loop Through a Tuple
You can loop through the tuple items by using a __ loop.

Iterate through the items and print the values:


thistuple = ("apple", "banana", "cherry")

Loop Through the Index Numbers


You can also loop through the tuple items by referring to their index number.
Use the __ and __ functions to create a suitable iterable.

Print all items by referring to their index number:


thistuple = ("apple", "banana", "cherry")
Using a While Loop
You can loop through the list items by using a while loop.
Use the __ function to determine the length of the tuple, then start at 0 and loop your way through
the tuple items by refering to their indexes.
Remember to increase the index by 1 after each iteration.

Print all items, using a while loop to go through all the index numbers:
thistuple = ("apple", "banana", "cherry")
Join Two Tuples
To join two or more tuples you can use the __ operator:

Join two tuples:


tuple1 = ("a", "b" , "c")
tuple2 = (1, 2, 3)

Multiply Tuples
If you want to multiply the content of a tuple a given number of times, you can use the __ operator:

Multiply the fruits tuple by 2:


fruits = ("apple", "banana", "cherry")
Tuple Methods
Python has two built-in methods that you can use on tuples.

Method Description

count() Returns the number of times a specified value occurs in a tuple

index() Searches the tuple for a specified value and returns the position of where it
was found
Python Sets
What are set?

Sets are written with __ brackets.

Create a Set

Note: Sets are unordered, so you cannot be sure in which order the items will appear.
Set Items
Set items are unordered, unchangeable, and do not allow duplicate values.

Unordered
Unordered means that the items in a set do not have a defined order.
Set items can appear in a different order every time you use them, and cannot be referred to by
index or key.

Unchangeable
Sets are unchangeable, meaning that we cannot change the items after the set has been created.
Once a set is created, you cannot change its items, but you can add new items.
Duplicates Not Allowed
Sets cannot have two items with the same value.
Example
Duplicate values will be ignored:
thisset = {"apple", "banana", "cherry", "apple"}

print(thisset)
Get the Length of a Set
To determine how many items a set has, use the len() method.
Example
Get the number of items in a set:
thisset = {"apple", "banana", "cherry"}

print(len(thisset))
Set Items - Data Types
Set items can be of any data type:
Example
String, int and boolean data types:
set1 = {"apple", "banana", "cherry"}
set2 = {1, 5, 7, 9, 3}
set3 = {True, False, False}
A set can contain different data types:
Example
A set with strings, integers and boolean values:
set1 = {"abc", 34, True, 40, "male"}
type()
From Python's perspective, sets are defined as objects with the data type 'set':
<class 'set'>
Example
What is the data type of a set?
myset = {"apple", "banana", "cherry"}
print(type(myset))
The set() Constructor
It is also possible to use the set() constructor to make a set.

Using the set() constructor to make a set

Python Collections (Arrays)


There are four collection data types in the Python programming language:
List is a collection which is ordered and changeable. Allows duplicate members.
Tuple is a collection which is ordered and unchangeable. Allows duplicate members.
Set is a collection which is unordered and unindexed. No duplicate members.
Dictionary is a collection which is unordered and changeable. No duplicate members.
When choosing a collection type, it is useful to understand the properties of that type. Choosing the
right type for a particular data set could mean retention of meaning, and, it could mean an increase
in efficiency or security.
Access Items
You cannot access items in a set by referring to an index or a key.
But you can loop through the set items using a __ loop, or ask if a specified value is present in a
set, by using the __ keyword.

Loop through the set, and print the values:


thisset = {"apple", "banana", "cherry"}

Check if "banana" is present in the set:


thisset = {"apple", "banana", "cherry"}
Change Items

Once a set is created, you cannot change its items, but you can add new items.

Add Items
Once a set is created, you cannot change its items, but you can add new items.
To add one item to a set use the __ method.

Add an item “orange” to the set


thisset = {"apple", "banana", "cherry"}
Add Sets
To add items from another set into the current set, use the __ method.

Add elements from tropical and thisset into newset:


thisset = {"apple", "banana", "cherry"}
tropical = {"pineapple", "mango", "papaya"}
Add Any Iterable
The object in the update() method does not have be a set, it can be any iterable object (tuples,
lists, dictionaries etc.).

Add elements of a list to at set:


thisset = {"apple", "banana", "cherry"}
mylist = ["kiwi", "orange"]
Remove Item
To remove an item in a set, use the __, or the __ method.

Remove "banana" from the set


thisset = {"apple", "banana", "cherry"}

Remove "banana" by using another method:


thisset = {"apple", "banana", "cherry"}
Remove Item
(contd)
You can also use the __ method to remove an item, but this method will remove the last item.
Remember that sets are unordered, so you will not know what item that gets removed.
Remove Item
(contd)
The __ method empties the set:
thisset = {"apple", "banana", "cherry"}

The __ keyword will delete the set completely:


thisset = {"apple", "banana", "cherry"}
Loop Items

You can loop through the set items by using a __ loop:


Example
Loop through the set, and print the values:
thisset = {"apple", "banana", "cherry"}

Join Two Sets


There are several ways to join two or more sets in Python.
You can use the __ method that returns a new set containing all items from both sets,
or the __ method that inserts all the items from one set into another:
Loop Items
(contd)
Example
The __ method returns a new set with all items from both sets:
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set3 = set1.__(set2)
print(set3)

Example
The __ method inserts the items in set2 into set1:
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set1.__(set2)
print(set1)
Keep ONLY the Duplicates
The __ method will keep only the items that are present in both sets.

Keep the items that exist in both set x, and set y:


x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

The __ method will return a new set, that only contains the items that are present in both sets.

Return a set that contains the items that exist in both set x, and set y:
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
Keep All, But NOT the Duplicates
The __ method will keep only the elements that are NOT present in both sets.

Keep the items that are not present in both sets:


x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

The __ method will return a new set, that contains only the elements that are NOT present in both
sets.

Return a set that contains all items from both sets, except items that are present in both:
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
Set Methods
Python has a set of built-in methods that you can use on sets.

Method Description

add() Adds an element to the set

clear() Removes all the elements from the set

copy() Returns a copy of the set

difference() Returns a set containing the difference between two or more sets

difference_update() Removes the items in this set that are also included in another,
specified set

discard() Remove the specified item

intersection() Returns a set, that is the intersection of two other sets


Set Methods
(contd)
intersection_update() Removes the items in this set that are not present in
other, specified set(s)

isdisjoint() Returns whether two sets have a intersection or not

issubset() Returns whether another set contains this set or not

issuperset() Returns whether this set contains another set or not

pop() Removes an element from the set


Set Methods
(contd)
remove() Removes the specified element

symmetric_difference() Returns a set with the symmetric differences of two sets

symmetric_difference_update() inserts the symmetric differences from this set and


another

union() Return a set containing the union of sets

update() Update the set with the union of this set and others
Python Dictionaries
What are dictionaries?

Create and print a dictionary


Dictionary Items
Dictionary items are ordered, changeable, and does not allow duplicates.
Dictionary items are presented in __:__ pairs, and can be referred to by using the key name.

Print the "brand" value of the dictionary:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Ordered or Unordered?
As of Python version 3.7, dictionaries are ordered. In Python 3.6 and earlier, dictionaries
are unordered.
When we say that dictionaries are ordered, it means that the items have a defined order, and
that order will not change.
Unordered means that the items does not have a defined order, you cannot refer to an item by
using an index.

Changeable
Dictionaries are changeable, meaning that we can change, add or remove items after the
dictionary has been created.
Duplicates Not Allowed
Dictionaries cannot have two items with the same key:
Example
Duplicate values will overwrite existing values:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "year": 2020
}
print(thisdict)
Dictionary Length
To determine how many items a dictionary has, use the __ function:

Dictionary Items - Data Types


The values in dictionary items can be of any data type:
type()

From Python's perspective, dictionaries are defined as objects with the data type 'dict':
<class 'dict'>
Example
Print the data type of a dictionary:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(type(thisdict))
Python Collections (Arrays)
There are four collection data types in the Python programming language:
 List is a collection which is ordered and changeable. Allows duplicate members.
 Tuple is a collection which is ordered and unchangeable. Allows duplicate members.
 Set is a collection which is unordered and unindexed. No duplicate members.
 Dictionary is a collection which is unordered and changeable. No duplicate members.

When choosing a collection type, it is useful to understand the properties of that type. Choosing
the right type for a particular data set could mean retention of meaning, and, it could mean an
increase in efficiency or security.
Accessing Items
You can access the items of a dictionary by referring to its key name, inside square brackets:
Example
Get the value of the "model" key:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
x = thisdict["model"]

There is also a method called __ that will give you the same result:

Get the value of the "model" key:


Get Keys
The __ method will return a list of all the keys in the dictionary.

The list of the keys is a view of the dictionary, meaning that any changes done to the dictionary
will be reflected in the keys list.

Add a new item to the original dictionary, and see that the keys list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
Get Values
The __ method will return a list of all the values in the dictionary.

The list of the values is a view of the dictionary, meaning that any changes done to the dictionary
will be reflected in the values list.

Make a change in the original dictionary, and see that the values list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
Get Values ( contd)
Add a new item to the original dictionary, and see that the values list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
Get Items
The __ method will return each item in a dictionary, as tuples in a list.

Get a list of the key:value pairs


car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
Get Items ( cont)
Check if Key Exists
To determine if a specified key is present in a dictionary use the __ keyword:

Check if "model" is present in the dictionary:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
 
Change Values
You can change the value of a specific item by referring to its key name:

Change the "year" to 2018:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Update Dictionary
The __ method will update the dictionary with the items from the given argument.
The argument must be a dictionary, or an iterable object with key:value pairs.

Update the "year" of the car by using the  method stated above:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Adding Items
Adding a new item to the list with a key “color” and value “red”
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Update Dictionary
The __ method will update the dictionary with the items from a given argument. If the item does
not exist, the item will be added.
The argument must be a dictionary, or an iterable object with key:value pairs.

Add a color item to the dictionary by using the __ method:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Removing Items
There are several methods to remove items from a dictionary:

The __ method removes the item with the specified key name:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

The __ method removes the last inserted item (in versions before 3.7, a random item is removed
instead):
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Removing Items ( cont)
Example
The del keyword removes the item with the specified key name:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
del thisdict["model"]
print(thisdict)
Example
The del keyword can also delete the dictionary completely:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists
Removing Items ( cont)
Example
The __ method empties the dictionary:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Loop Through a Dictionary
You can loop through a dictionary by using a __ loop.
When looping through a dictionary, the return value are the keys of the dictionary, but there are
methods to return the values as well.

Print all key names in the dictionary, one by one:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Loop Through a Dictionary
(contd)
You can also use the __ method to return values of a dictionary:

You can use the __ method to return the keys of a dictionary:

Loop through both keys and values, by using the __ method:


Copy a Dictionary

You cannot copy a dictionary simply by typing dict2 = dict1, because: dict2 will only be


a reference to dict1, and changes made in dict1 will automatically also be made in dict2.
There are ways to make a copy, one way is to use the built-in Dictionary method __.

Make a copy of a dictionary with the above stated method:


thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

Another way to make a copy is to use the built-in function dict().


Copy a Dictionary ( Contd)

Example
Make a copy of a dictionary with the dict() function:
thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
Nested Dictionaries

A dictionary can contain dictionaries, this is called ___ dictionaries.


Example
Create a dictionary that contain three dictionaries:
Nested Dictionaries ( contd)

Or, if you want to add three dictionaries into a new dictionary:

Create three dictionaries, then create one dictionary that will contain the other three dictionaries:
child1 = {
  "name" : "Emil",
  "year" : 2004
}
child2 = {
  "name" : "Tobias",
  "year" : 2007
}
child3 = {
  "name" : "Linus",
  "year" : 2011
}

myfamily = {
  "child1" : child1,
  "child2" : child2,
  "child3" : child3
}
Dictionary Methods

Python has a set of built-in methods that you can use on dictionaries.

Method Description

clear() Removes all the elements from the


dictionary

copy() Returns a copy of the dictionary

fromkeys() Returns a dictionary with the


specified keys and value

get() Returns the value of the specified key

items() Returns a list containing a tuple for


each key value pair

keys() Returns a list containing the


dictionary's keys

pop() Removes the element with the


specified key
Dictionary Methods ( contd )

popitem() Removes the last inserted


key-value pair

setdefault() Returns the value of the


specified key. If the key does not
exist: insert the key, with the
specified value

update() Updates the dictionary with the


specified key-value pairs

values() Returns a list of all the values in


the dictionary
Python If ... Else
Python Conditions and If statements
Python supports the usual logical conditions from mathematics:
Equals: a __ b
Not Equals: a __ b
Less than: a __ b
Less than or equal to: a __ b
Greater than: a __ b
Greater than or equal to: a __ b
These conditions can be used in several ways, most commonly in "if statements" and loops.
An "if statement" is written by using the if keyword.
Python If ... Else
Python Conditions and If statements ( contd)
What is an “if” statement?
Indentation

What is indentation?
Why is it important in python programming?
Elif

What is an “elif” condition and when is It used?


Else

What is an “else” statement?


When is it used?
Else ( contd )
Short Hand If

If you have only one statement to execute, you can put it on the same line as the if statement.
Example
One line if statement:
if a > b: print("a is greater than b")
Short Hand If ... Else

If you have only one statement to execute, one for if, and one for else, you can put it all on the
same line:
Example
One line if else statement:
a = 2
b = 330
print("A") if a > b else print("B")
This technique is known as Ternary Operators, or __ Expressions.
You can also have multiple else statements on the same line:
Example
One line if else statement, with 3 conditions:
a = 330
b = 330
print("A") if a > b else print("=") if a == b else print("B")
And

The and keyword is a logical operator, and is used to combine conditional statements:

Test if a is greater than b, AND if c is greater than a:


a = 200
b = 33
c = 500
Or

The or keyword is a logical operator, and is used to combine conditional statements:

Test if a is greater than b, OR if a is greater than c:


a = 200
b = 33
c = 500
Nested If

You can have if statements inside if statements, this is called __ if statements.

x = 41

if x > 10:
  print("Above ten,")
  if x > 20:
    print("and also above 20!")
  else:
    print("but not above 20.")
The pass Statement

What is the “pass” statement used for?

Give example of it in a while loop


Python While Loops

Python Loops
Python has two primitive loop commands:
 __ loops
 __ loops

The __ Loop
With the __ loop we can execute a set of statements as long as a condition is true.
The break Statement

What is the “break” statement used for?

Give an example in a loop


The continue Statement
What is the “continue” statement used for?

Use it in an “if” statement


The else Statement

With the else statement we can run a block of code once when the condition no longer is true:

Print a message once the condition is false:


Python For Loops

What is a “for” loop?


Looping Through a String

Even strings are __ objects, they contain a sequence of characters:

Loop through the letters in the string "banana":


The break Statement

With the break statement we can stop the loop before it has looped through all the items:
The continue Statement

With the continue statement we can stop the current iteration of the loop, and continue with the
next:
The range() Function

What does the range() function do?

The range() function defaults to 0 as a starting value, however it is possible to specify the


starting value by __
The range() Function
( Contd )
The range() function defaults to increment the sequence by 1, however it is possible to specify
the increment value by adding a __
Else in For Loop

The else keyword in a for loop specifies a block of code to be executed when the loop is


finished
Nested Loops

What is a nested loop?

Give an example of a nested loop


The pass Statement

for loops cannot be empty, but if you for some reason have a for loop with no content, put in
the pass statement to avoid __.
Python Functions

What is a function?

You can pass data, known as __, into a function.


A function can __ data as a result.

Creating a Function
In Python a function is defined using the __ keyword:

Create a function called myfunc that prints “helloworld” when called


Calling a Function

How do you call a function?

Call the myfunc that was written earlier


Arguments

What are arguments?

Arguments are often shortened to args in Python documentations.


Parameters or Arguments?

The terms parameter and argument can be used for the same thing: information that are passed
into a function.
From a function's perspective:
A parameter is the variable listed inside the parentheses in the function definition.
An argument is the value that is sent to the function when it is called.
Number of Arguments

By default, a function must be called with the correct number of arguments. Meaning that if your
function expects
2 arguments, you have to call the function with 2 arguments, not more, and not less.
Arbitrary Arguments, *args

If you do not know how many arguments that will be passed into your function, add a * before
the parameter name in the function definition.
This way the function will receive a __ of arguments, and can access the items accordingly:
Keyword Arguments

What is a keyword argument?

What are keyword arguments used for?


Arbitrary Keyword Arguments,
**kwargs
If you do not know how many keyword arguments that will be passed into your function, add two
asterisk: ** before the parameter name in the function definition.
This way the function will receive a __ of arguments, and can access the items accordingly:
Default Parameter Value

What is meant by default parameter value?

Why is it used?

def my_function(country = "Norway"):
  print("I am from " + country)

my_function("Sweden")
my_function()

What will happen if you run the code above?


Passing a List as an Argument

You can send any data types of argument to a function (string, number, list, dictionary etc.), and it
will be treated as the same data type inside the function.
E.g. if you send a List as an argument, it will still be a List when it reaches the function:
Example
def my_function(food):
  for x in food:
    print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)
Return Values

What is the return() method used for in a function?

Give an example of it used in a function


The pass Statement

function definitions cannot be empty, but if you for some reason have a function definition
with no content, put in the pass statement to avoid getting an error.
Example
def myfunction():
  pass
Recursion

Python also accepts function recursion, which means a defined function can call itself.
Recursion is a common mathematical and programming concept. It means that a function calls
itself. This has the benefit of meaning that you can loop through data to reach a result.
The developer should be very careful with recursion as it can be quite easy to slip into writing a
function which never terminates, or one that uses excess amounts of memory or processor
power. However, when written correctly recursion can be a very efficient and mathematically-
elegant approach to programming.
In this example, tri_recursion() is a function that we have defined to call itself ("recurse"). We use
the k variable as the data, which decrements (-1) every time we recurse. The recursion ends
when the condition is not greater than 0 (i.e. when it is 0).
To a new developer it can take some time to work out how exactly this works, best way to find out
is by testing and modifying it.
Recursion ( contd )

Example
Recursion Example
def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result

print("\n\nRecursion Example Results")


tri_recursion(6)
Python Lambda

A lambda function is a small anonymous function.


A lambda function can take any number of arguments, but can only have one expression.

Syntax
lambda arguments : expression
The expression is executed and the result is returned:
Example
Add 10 to argument a, and return the result:
x = lambda a : a + 10
print(x(5))
Lambda functions can take any number of arguments:
Python Lambda ( contd )

Example
Multiply argument a with argument b and return the result:
x = lambda a, b : a * b
print(x(5, 6))
Example
Summarize argument a, b, and c and return the result:
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
Why Use Lambda Functions?

The power of lambda is better shown when you use them as an anonymous function inside
another function.
Say you have a function definition that takes one argument, and that argument will be multiplied
with an unknown number:
def myfunc(n):
  return lambda a : a * n
Use that function definition to make a function that always doubles the number you send in:
Example
def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))
Or, use the same function definition to make a function that always triples the number you send
in:
Why Use Lambda Functions?
( contd )
Example
def myfunc(n):
  return lambda a : a * n

mytripler = myfunc(3)

print(mytripler(11))
Or, use the same function definition to make both functions, in the same program:
Example
def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)
mytripler = myfunc(3)

print(mydoubler(11))
print(mytripler(11))
Use lambda functions when an anonymous function is required for a short period of time.
Python Arrays

Note: Python does not have built-in support for Arrays, but Python Lists can be used instead.

Arrays
Note: This page shows you how to use LISTS as ARRAYS, however, to work with arrays in
Python you will have to import a library, like the NumPy library.
Arrays are used to store multiple values in one single variable:
Example
Create an array containing car names:
cars = ["Ford", "Volvo", "BMW"]
What is an Array?

An array is a special variable, which can hold more than one value at a time.
If you have a list of items (a list of car names, for example), storing the cars in single variables
could look like this:
car1 = "Ford"
car2 = "Volvo"
car3 = "BMW"
However, what if you want to loop through the cars and find a specific one? And what if you had
not 3 cars, but 300?
The solution is an array!
An array can hold many values under a single name, and you can access the values by referring
to an index number.
Access the Elements of an Array

You refer to an array element by referring to the index number.


Example
Get the value of the first array item:
x = cars[0]
Example
Modify the value of the first array item:
cars[0] = "Toyota"
The Length of an Array

Use the len() method to return the length of an array (the number of elements in an array).
Example
Return the number of elements in the cars array:
x = len(cars)
Note: The length of an array is always one more than the highest array index.
Looping Array Elements

You can use the for in loop to loop through all the elements of an array.
Example
Print each item in the cars array:
for x in cars:
  print(x)

Adding Array Elements


You can use the append() method to add an element to an array.
Example
Add one more element to the cars array:
cars.append("Honda")
Removing Array Elements

You can use the pop() method to remove an element from the array.


Example
Delete the second element of the cars array:
cars.pop(1)
You can also use the remove() method to remove an element from the array.
Example
Delete the element that has the value "Volvo":
cars.remove("Volvo")
Note: The list's remove() method only removes the first occurrence of the specified value.
Array Methods

Python has a set of built-in methods that you can use on lists/arrays.

Method Description

append() Adds an element at the end of


the list

clear() Removes all the elements from


the list

copy() Returns a copy of the list

count() Returns the number of elements


with the specified value

extend() Add the elements of a list (or any


iterable), to the end of the current
list
Array Methods ( contd )

index() Returns the index of the


first element with the
specified value

insert() Adds an element at the


specified position

pop() Removes the element at the


specified position

remove() Removes the first item with


the specified value

reverse() Reverses the order of the list

sort() Sorts the list


Note: Python does not have built-in support for Arrays, but Python Lists can be
used instead.
Python Classes and Objects
Python is an object oriented programming language.
Almost everything in Python is an object, with its properties and methods.
A Class is like an object constructor, or a "blueprint" for creating objects.

Create a Class
To create a class, use the keyword class:
Example
Create a class named MyClass, with a property named x:
class MyClass:
  x = 5
Create Object
Now we can use the class named MyClass to create objects:
Example
Create an object named p1, and print the value of x:
p1 = MyClass()
print(p1.x)
The __init__() Function
The examples above are classes and objects in their simplest form, and are not really useful in real
life applications.
To understand the meaning of classes we have to understand the built-in __init__() function.
All classes have a function called __init__(), which is always executed when the class is being
initiated.
Use the __init__() function to assign values to object properties, or other operations that are
necessary to do when the object is being created:
Example
Create a class named Person, use the __init__() function to assign values for name and age:
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)
Note: The __init__() function is called automatically every time the class is being used to create a
new object.
Object Methods
Objects can also contain methods. Methods in objects are functions that belong to the object.
Let us create a method in the Person class:
Example
Insert a function that prints a greeting, and execute it on the p1 object:
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()
Note: The self parameter is a reference to the current instance of the class, and is used to access
variables that belong to the class.
The self Parameter
The self parameter is a reference to the current instance of the class, and is used to access
variables that belongs to the class.
It does not have to be named self , you can call it whatever you like, but it has to be the first
parameter of any function in the class:
Example
Use the words mysillyobject and abc instead of self:
class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()
Modify Object Properties
You can modify properties on objects like this:
Example
Set the age of p1 to 40:
p1.age = 40

Delete Object Properties


You can delete properties on objects by using the del keyword:
Example
Delete the age property from the p1 object:
del p1.age
Delete Objects
You can delete objects by using the del keyword:
Example
Delete the p1 object:
del p1

The pass Statement


class definitions cannot be empty, but if you for some reason have a class definition with no
content, put in the pass statement to avoid getting an error.
Example
class Person:
  pass
Python Inheritance
Inheritance allows us to define a class that inherits all the methods and properties from another class.
Parent class is the class being inherited from, also called base class.
Child class is the class that inherits from another class, also called derived class.

Create a Parent Class


Any class can be a parent class, so the syntax is the same as creating any other class:
Example
Create a class named Person, with firstname and lastname properties, and a printname method:
class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

#Use the Person class to create an object, and then execute the printname method:

x = Person("John", "Doe")
x.printname()
Create a Child Class
To create a class that inherits the functionality from another class, send the parent class as a
parameter when creating the child class:
Example
Create a class named Student, which will inherit the properties and methods from the Person class:
class Student(Person):
  pass
Note: Use the pass keyword when you do not want to add any other properties or methods to the
class.
Now the Student class has the same properties and methods as the Person class.
Example
Use the Student class to create an object, and then execute the printname method:
x = Student("Mike", "Olsen")
x.printname()
Add the __init__() Function
So far we have created a child class that inherits the properties and methods from its parent.
We want to add the __init__() function to the child class (instead of the pass keyword).
Note: The __init__() function is called automatically every time the class is being used to create a new
object.
Example
Add the __init__() function to the Student class:
class Student(Person):
  def __init__(self, fname, lname):
    #add properties etc.
When you add the __init__() function, the child class will no longer inherit the
parent's __init__() function.
Note: The child's __init__() function overrides the inheritance of the parent's __init__() function.
To keep the inheritance of the parent's __init__() function, add a call to the parent's __init__() function:
Example
class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)
Now we have successfully added the __init__() function, and kept the inheritance of the parent class,
and we are ready to add functionality in the __init__() function.
Use the super() Function
Python also has a super() function that will make the child class inherit all the methods and
properties from its parent:
Example
class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
By using the super() function, you do not have to use the name of the parent element, it will
automatically inherit the methods and properties from its parent.
Add Properties
Example
Add a property called graduationyear to the Student class:
class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019
In the example below, the year 2019 should be a variable, and passed into the Student class when
creating student objects. To do so, add another parameter in the __init__() function:
Example
Add a year parameter, and pass the correct year when creating objects:
class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)
Add Methods
Example
Add a method called welcome to the Student class:
class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of",
self.graduationyear)
If you add a method in the child class with the same name as a function in the parent class, the
inheritance of the parent method will be overridden.
Python Iterators
An iterator is an object that contains a countable number of values.
An iterator is an object that can be iterated upon, meaning that you can traverse through all the
values.
Technically, in Python, an iterator is an object which implements the iterator protocol, which consist
of the methods __iter__() and __next__().

Iterator vs Iterable
Lists, tuples, dictionaries, and sets are all iterable objects. They are iterable containers which you
can get an iterator from.
All these objects have a iter() method which is used to get an iterator:
Python Iterators ( contd )
Example
Return an iterator from a tuple, and print each value:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

Even strings are iterable objects, and can return an iterator:


Example
Strings are also iterable objects, containing a sequence of characters:
mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Looping Through an Iterator
We can also use a for loop to iterate through an iterable object:
Example
Iterate the values of a tuple:
mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
Example
Iterate the characters of a string:
mystr = "banana"

for x in mystr:
  print(x)
The for loop actually creates an iterator object and executes the next() method for each loop.
Create an Iterator
To create an object/class as an iterator you have to implement the methods __iter__() and __next__() to your object.
As you have learned in the Python Classes/Objects chapter, all classes have a function called __init__(), which allows you
to do some initializing when the object is being created.
The __iter__() method acts similar, you can do operations (initializing etc.), but must always return the iterator object itself.
The __next__() method also allows you to do operations, and must return the next item in the sequence.
Example
Create an iterator that returns numbers, starting with 1, and each sequence will increase by one (returning 1,2,3,4,5 etc.):
class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
StopIteration
The example above would continue forever if you had enough next() statements, or if it was used in
a for loop.
To prevent the iteration to go on forever, we can use the StopIteration statement.
In the __next__() method, we can add a terminating condition to raise an error if the iteration is
done a specified number of times:
Example
Stop after 20 iterations:
class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
  print(x)
Python Scope
A variable is only available from inside the region it is created. This is called scope.

Local Scope
A variable created inside a function belongs to the local scope of that function, and can only be
used inside that function.

Example

A variable created inside a function is available inside that function:

def myfunc():
  x = 300
  print(x)

myfunc()
Function Inside Function
As explained in the example above, the variable  x is not available outside the function, but it is
available for any function inside the function:

Example
The local variable can be accessed from a function within the function:

def myfunc():
  x = 300
  def myinnerfunc():
    print(x)
  myinnerfunc()

myfunc()
Global Scope
A variable created in the main body of the Python code is a global variable and belongs to the global
scope.

Global variables are available from within any scope, global and local.

Example
A variable created outside of a function is global and can be used by anyone:

x = 300

def myfunc():
  print(x)

myfunc()

print(x)
Naming Variables
If you operate with the same variable name inside and outside of a function, Python will treat them as
two separate variables, one available in the global scope (outside the function) and one available in
the local scope (inside the function):

Example
The function will print the local x, and then the code will print the global x:

x = 300

def myfunc():
  x = 200
  print(x)

myfunc()

print(x)
Global Keyword
If you need to create a global variable, but are stuck in the local scope, you can use the  global keyword.

The global keyword makes the variable global.

Example
If you use the global keyword, the variable belongs to the global scope:

def myfunc():
  global x
  x = 300

myfunc()

print(x)
Also, use the global keyword if you want to make a change to a global variable inside a function.

Example
To change the value of a global variable inside a function, refer to the variable by using the  global keyword:

x = 300

def myfunc():
  global x
  x = 200

myfunc()

print(x)
Python Modules
What is a Module?
Consider a module to be the same as a code library.

A file containing a set of functions you want to include in your application.

Create a Module
To create a module just save the code you want in a file with the file extension .py:

Example
Save this code in a file named mymodule.py
def greeting(name):
  print("Hello, " + name)
Python Modules ( contd )
Use a Module

Now we can use the module we just created, by using the import statement:

Example

Import the module named mymodule, and call the greeting function:

import mymodule

mymodule.greeting("Jonathan")

Note: When using a function from a module, use the syntax: module_name.function_name.

Variables in Module

The module can contain functions, as already described, but also variables of all types (arrays,
dictionaries, objects etc):
Python Modules ( contd )
Example

Save this code in the file mymodule.py

person1 = {
  "name": "John",
  "age": 36,
  "country": "Norway"
}

Example

Import the module named mymodule, and access the person1 dictionary:

import mymodule

a = mymodule.person1["age"]
print(a)
Naming a Module
You can name the module file whatever you like, but it must have the file extension .py

Re-naming a Module

You can create an alias when you import a module, by using the as keyword:

Example

Create an alias for mymodule called mx:

import mymodule as mx

a = mx.person1["age"]
print(a)
Built-in Modules
There are several built-in modules in Python, which you can import whenever you like.

Example

Import and use the platform module:

import platform

x = platform.system()
print(x)
Using the dir() Function
There is a built-in function to list all the function names (or variable names) in a module.
The dir() function:

Example

List all the defined names belonging to the platform module:

import platform

x = dir(platform)
print(x)

Note: The dir() function can be used on all modules, also the ones you create yourself.
Import From Module
You can choose to import only parts from a module, by using the from keyword.
Example
The module named mymodule has one function and one dictionary:
def greeting(name):
  print("Hello, " + name)

person1 = {
  "name": "John",
  "age": 36,
  "country": "Norway"
}

Example
Import only the person1 dictionary from the module:
from mymodule import person1

print (person1["age"])
Note: When importing using the from keyword, do not use the module name when referring to
elements in the module. Example: person1["age"], not mymodule.person1["age"]

 
Python Datetime

Python Dates
A date in Python is not a data type of its own, but we can import a module named  datetime to work
with dates as date objects.

Example
Import the datetime module and display the current date:

import datetime

x = datetime.datetime.now()
print(x)
Date Output
When we execute the code from the example above the result will be:

2021-04-01 14:27:03.635949

The date contains year, month, day, hour, minute, second, and microsecond.

The datetime module has many methods to return information about the date object.

Here are a few examples, you will learn more about them later in this chapter:

Example

Return the year and name of weekday:

import datetime

x = datetime.datetime.now()

print(x.year)
print(x.strftime("%A"))
Creating Date Objects
To create a date, we can use the datetime() class (constructor) of the datetime module.

The datetime() class requires three parameters to create a date: year, month, day.

Example

Create a date object:

import datetime

x = datetime.datetime(2020, 5, 17)

print(x)

The datetime() class also takes parameters for time and timezone (hour, minute, second,
microsecond, tzone), but they are optional, and has a default value of 0, (None for timezone).
The strftime() Method
The datetime object has a method for formatting date objects into readable strings.

The method is called strftime(), and takes one parameter, format, to specify the format of the
returned string:

Example

Display the name of the month:

import datetime

x = datetime.datetime(2018, 6, 1)

print(x.strftime("%B"))

A reference of all the legal format codes:


The strftime() Method ( contd )

Directive Description Example

%a Weekday, short version Wed

%A Weekday, full version Wednesday

%w Weekday as a number 0- 3
6, 0 is Sunday

%d Day of month 01-31 31

%b Month name, short Dec


version

%B Month name, full version December

%m Month as a number 01-12 12

%y Year, short version, 18


without century
The strftime() Method ( contd )

%Y Year, full 2018


version

%H Hour 00-23 17

%I Hour 00-12 05

%p AM/PM PM

%M Minute 00-59 41

%S Second 00-59 08

%f Microsecond 548513
000000-999999

%z UTC offset +0100


The strftime() Method ( contd )

%Z Timezone CST

%j Day number of 365


year 001-366

%U Week number of 52
year, Sunday as
the first day of
week, 00-53

%W Week number of 52
year, Monday as
the first day of
week, 00-53

%c Local version of Mon Dec 31


date and time 17:41:00 2018
The strftime() Method ( contd )

%x Local version 12/31/18


of date

%X Local version of 17:41:00


time

%% A % character %

%G ISO 8601 year 2018

%u ISO 8601 1
weekday (1-7)

%V ISO 8601 01
weeknumber
(01-53)
Python Math
Python has a set of built-in math functions, including an extensive math module,
that allows you to perform mathematical tasks on numbers.

Built-in Math Functions

The min() and max() functions can be used to find the lowest or highest value in an


iterable:

Example

x = min(5, 10, 25)
y = max(5, 10, 25)

print(x)
print(y)
The abs() function returns the absolute (positive) value of the specified number:
Python Math ( contd )
Example

x = abs(-7.25)

print(x)

The pow(x, y) function returns the value of x to the power of y (x y).

Example

Return the value of 4 to the power of 3 (same as 4 * 4 * 4):

x = pow(4, 3)

print(x)
The Math Module
Python has also a built-in module called math, which extends the list of mathematical functions.

To use it, you must import the math module:

import math

When you have imported the math module, you can start using methods and constants of the module.

The math.sqrt() method for example, returns the square root of a number:

Example

import math

x = math.sqrt(64)

print(x)

The math.ceil() method rounds a number upwards to its nearest integer, and the math.floor() method rounds a
number downwards to its nearest integer, and returns the result:
The Math Module ( contd )
Example

import math

x = math.ceil(1.4)
y = math.floor(1.4)

print(x) # returns 2
print(y) # returns 1

The math.pi constant, returns the value of PI (3.14...):

Example

import math

x = math.pi

print(x)

 
Python JSON
JSON is a syntax for storing and exchanging data.

JSON is text, written with JavaScript object notation.

JSON in Python

Python has a built-in package called json, which can be used to work with JSON data.

Example

Import the json module:

import json
Parse JSON - Convert from
JSON to Python
If you have a JSON string, you can parse it by using the json.loads() method.

The result will be a Python dictionary.

Example

Convert from JSON to Python:

import json

# some JSON:
x =  '{ "name":"John", "age":30, "city":"New York"}'

# parse x:
y = json.loads(x)

# the result is a Python dictionary:


print(y["age"])
Convert from Python to JSON
If you have a Python object, you can convert it into a JSON string by using
the json.dumps() method.

Example

Convert from Python to JSON:

import json

# a Python object (dict):


x = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# convert into JSON:


y = json.dumps(x)

# the result is a JSON string:


print(y)
Convert from Python to JSON
( contd )
You can convert Python objects of the following types, into JSON strings:

dict

list

tuple

string

int

float

True

False

None

Example

Convert Python objects into JSON strings, and print the values:

import json

print(json.dumps({"name": "John", "age": 30}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
Convert from Python to JSON
( contd )
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))

When you convert from Python to JSON, Python objects are converted into the JSON (JavaScript)
equivalent:
Convert from Python to JSON
( contd )
Python JSON

dict Object

list Array

tuple Array

str String

int Number

float Number

True true

False false
Convert from Python to JSON
( contd )
Example

Convert a Python object containing all the legal data types:

import json

x = {
  "name": "John",
  "age": 30,
  "married": True,
  "divorced": False,
  "children": ("Ann","Billy"),
  "pets": None,
  "cars": [
    {"model": "BMW 230", "mpg": 27.5},
    {"model": "Ford Edge", "mpg": 24.1}
  ]
}

print(json.dumps(x))
Format the Result
The example above prints a JSON string, but it is not very easy to read, with no indentations and
line breaks.

The json.dumps() method has parameters to make it easier to read the result:

Example

Use the indent parameter to define the numbers of indents:

json.dumps(x, indent=4)

You can also define the separators, default value is (", ", ": "), which means using a comma and a
space to separate each object, and a colon and a space to separate keys from values:

Example

Use the separators parameter to change the default separator:

json.dumps(x, indent=4, separators=(". ", " = "))


Order the Result
The json.dumps() method has parameters to order the keys in the result:

Example

Use the sort_keys parameter to specify if the result should be sorted or not:

json.dumps(x, indent=4, sort_keys=True)


Python RegEx
A RegEx, or Regular Expression, is a sequence of characters that forms a search pattern.

RegEx can be used to check if a string contains the specified search pattern.

RegEx Module
Python has a built-in package called re, which can be used to work with Regular Expressions.

Import the re module:

import re
RegEx in Python
When you have imported the re module, you can start using regular expressions:

Example

Search the string to see if it starts with "The" and ends with "Spain":

import re

txt = "The rain in Spain"


x = re.search("^The.*Spain$", txt)
RegEx Functions
The re module offers a set of functions that allows us to search a string for a match:

Function Description

findall Returns a list containing all matches

search Returns a Match object if there is a match


anywhere in the string

split Returns a list where the string has been split at


each match

sub Replaces one or many matches with a string


Metacharacters
Metacharacters are characters with a special meaning:

Character Description Example

[] A set of characters "[a-m]"

\ Signals a special sequence (can "\d"


also be used to escape special
characters)

. Any character (except newline "he..o"


character)

^ Starts with "^hello"

$ Ends with "world$"

* Zero or more occurrences "aix*"

+ One or more occurrences "aix+"

{} Exactly the specified number of "al{2}"


occurrences

| Either or "falls|stays"

() Capture and group  


Special Sequences
A special sequence is a \ followed by one of the characters in the list below, and has a special
meaning:
Character Description Example

\A Returns a match if the specified "\AThe"


characters are at the beginning of the
string

\b Returns a match where the specified r"\bain"


characters are at the beginning or at r"ain\b"
the end of a word
(the "r" in the beginning is making
sure that the string is being treated as
a "raw string")

\B Returns a match where the specified r"\Bain"


characters are present, but NOT at r"ain\B"
the beginning (or at the end) of a
word
(the "r" in the beginning is making
sure that the string is being treated as
a "raw string")
Special Sequences ( contd )

\d Returns a match "\d"


where the string
contains digits
(numbers from 0-9)

\D Returns a match where "\D"


the string DOES NOT
contain digits

\s Returns a match where "\s"


the string contains a
white space character

\S Returns a match where "\S"


the string DOES NOT
contain a white space
character
Special Sequences ( contd )

\w Returns a match "\w"


where the string
contains any word
characters
(characters from a
to Z, digits from 0-9,
and the underscore
_ character)

\W Returns a match "\W"


where the string
DOES NOT contain
any word characters

\Z Returns a match if "Spain\Z"


the specified
characters are at the
end of the string
Sets
A set is a set of characters inside a pair of square brackets [] with a special meaning:

Set Description

[arn] Returns a match where one of the specified


characters (a, r, or n) are present

[a-n] Returns a match for any lower case


character, alphabetically between a and n

[^arn] Returns a match for any character


EXCEPT a, r, and n

[0123] Returns a match where any of the specified


digits (0, 1, 2, or 3) are present
Sets ( contd )

[0-9] Returns a match for any


digit between 0 and 9

[0-5][0-9] Returns a match for any


two-digit numbers
from 00 and 59

[a-zA-Z] Returns a match for any


character alphabetically
between a and z, lower
case OR upper case

[+] In sets, +, *, ., |, (), $,{} has
no special meaning,
so [+] means: return a
match for any + character in
the string
The findall() Function
The findall() function returns a list containing all matches.

Example

Print a list of all matches:

import re

txt = "The rain in Spain"


x = re.findall("ai", txt)
print(x)

The list contains the matches in the order they are found.

If no matches are found, an empty list is returned:


The findall() Function ( contd )

Example
Return an empty list if no match was found:

import re

txt = "The rain in Spain"


x = re.findall("Portugal", txt)
print(x)
The search() Function
The search() function searches the string for a match, and returns a Match object if there is a match.

If there is more than one match, only the first occurrence of the match will be returned:

Example

Search for the first white-space character in the string:

import re

txt = "The rain in Spain"


x = re.search("\s", txt)

print("The first white-space character is located in position:", x.start())

If no matches are found, the value None is returned:

Example

Make a search that returns no match:

import re

txt = "The rain in Spain"


x = re.search("Portugal", txt)
print(x)
The split() Function
The split() function returns a list where the string has been split at each match:

Example

Split at each white-space character:

import re

txt = "The rain in Spain"


x = re.split("\s", txt)
print(x)

You can control the number of occurrences by specifying the maxsplit parameter:

Example

Split the string only at the first occurrence:

import re

txt = "The rain in Spain"


x = re.split("\s", txt, 1)
print(x)
The sub() Function
The sub() function replaces the matches with the text of your choice:

Example

Replace every white-space character with the number 9:

import re

txt = "The rain in Spain"


x = re.sub("\s", "9", txt)
print(x)

You can control the number of replacements by specifying the count parameter:

Example

Replace the first 2 occurrences:

import re

txt = "The rain in Spain"


x = re.sub("\s", "9", txt, 2)
print(x)
Match Object
A Match Object is an object containing information about the search and the result.

Note: If there is no match, the value None will be returned, instead of the Match Object.

Example

Do a search that will return a Match Object:

import re

txt = "The rain in Spain"


x = re.search("ai", txt)
print(x) #this will print an object

The Match object has properties and methods used to retrieve information about the search, and
the result:

.span() returns a tuple containing the start-, and end positions of the match.
.string returns the string passed into the function
.group() returns the part of the string where there was a match
Match Object ( contd )
Example

Print the position (start- and end-position) of the first match occurrence.

The regular expression looks for any words that starts with an upper case "S":

import re

txt = "The rain in Spain"


x = re.search(r"\bS\w+", txt)
print(x.span())

Example

Print the string passed into the function:

import re

txt = "The rain in Spain"


x = re.search(r"\bS\w+", txt)
print(x.string)
Match Object ( contd )

Example

Print the part of the string where there was a match.

The regular expression looks for any words that starts with an upper case "S":

import re

txt = "The rain in Spain"


x = re.search(r"\bS\w+", txt)
print(x.group())

Note: If there is no match, the value None will be returned, instead of the Match Object.
Python PIP

What is PIP?

PIP is a package manager for Python packages, or modules if you like.

Note: If you have Python version 3.4 or later, PIP is included by default.

What is a Package?

A package contains all the files you need for a module.

Modules are Python code libraries you can include in your project.
Check if PIP is Installed
Navigate your command line to the location of Python's script directory, and type the following:

Example

Check PIP version:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip --version

Install PIP

If you do not have PIP installed, you can download and install it from this page: 
https://pypi.org/project/pip/
Download a Package
Downloading a package is very easy.

Open the command line interface and tell PIP to download the package you want.

Navigate your command line to the location of Python's script directory, and type the following:

Example
Download a package named "camelcase":

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip
install camelcase

Now you have downloaded and installed your first package!


Using a Package
Once the package is installed, it is ready to use.

Import the "camelcase" package into your project.

Example

Import and use "camelcase":

import camelcase

c = camelcase.CamelCase()

txt = "hello world"

print(c.hump(txt))
Find Packages
Find more packages at https://pypi.org/.

Remove a Package

Use the uninstall command to remove a package:

Example

Uninstall the package named "camelcase":

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip uninstall camelcase

The PIP Package Manager will ask you to confirm that you want to remove the camelcase package:

Uninstalling camelcase-02.1:
  Would remove:
    c:\users\Your Name\appdata\local\programs\python\python36-32\lib\site-packages\camecase-0.2-
py3.6.egg-info
    c:\users\Your Name\appdata\local\programs\python\python36-32\lib\site-packages\camecase\*
Proceed (y/n)?

Press y and the package will be removed.


List Packages
Use the list command to list all the packages installed on your system:

Example

List installed packages:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip list

Result:

Package         Version
-----------------------
camelcase       0.2
mysql-connector 2.1.6
pip             18.1
pymongo         3.6.1
setuptools      39.0.1
Python Try Except
The try block lets you test a block of code for errors.

The except block lets you handle the error.

The finally block lets you execute code, regardless of the result of the try- and except blocks.
Exception Handling
When an error occurs, or exception as we call it, Python will normally stop and generate an error message.

These exceptions can be handled using the try statement:

Example

The try block will generate an exception, because x is not defined:

try:
  print(x)
except:
  print("An exception occurred")

Since the try block raises an error, the except block will be executed.

Without the try block, the program will crash and raise an error:

Example

This statement will raise an error, because x is not defined:

print(x)
Many Exceptions
You can define as many exception blocks as you want, e.g. if you want to execute a special block
of code for a special kind of error:

Example

Print one message if the try block raises a NameError and another for other errors:

try:
  print(x)
except NameError:
  print("Variable x is not defined")
except:
  print("Something else went wrong")
Else
You can use the else keyword to define a block of code to be executed if no errors were raised:

Example

In this example, the try block does not generate any error:

try:
  print("Hello")
except:
  print("Something went wrong")
else:
  print("Nothing went wrong")
Finally
The finally block, if specified, will be executed regardless if the try block raises an error or not.

Example

try:
  print(x)
except:
  print("Something went wrong")
finally:
  print("The 'try except' is finished")

This can be useful to close objects and clean up resources:

Example

Try to open and write to a file that is not writable:

try:
  f = open("demofile.txt")
  f.write("Lorum Ipsum")
except:
  print("Something went wrong when writing to the file")
finally:
  f.close()

The program can continue, without leaving the file object open.
Raise an exception
As a Python developer you can choose to throw an exception if a condition occurs.

To throw (or raise) an exception, use the raise keyword.

Example

Raise an error and stop the program if x is lower than 0:

x = -1

if x < 0:
  raise Exception("Sorry, no numbers below zero")

The raise keyword is used to raise an exception.

You can define what kind of error to raise, and the text to print to the user.
Raise an exception ( contd )
Example
Raise a TypeError if x is not an integer:
x = "hello"

if not type(x) is int:
  raise TypeError("Only integers are allowed")
Python User Input
User Input

Python allows for user input.

That means we are able to ask the user for input.

The method is a bit different in Python 3.6 than Python 2.7.

Python 3.6 uses the input() method.

Python 2.7 uses the raw_input() method.

The following example asks for the username, and when you entered the username, it gets
printed on the screen:
Python User Input ( contd )

Python 3.6

username = input("Enter username:")


print("Username is: " + username)

Python 2.7

username = raw_input("Enter username:")


print("Username is: " + username)

Python stops executing when it comes to the input() function, and continues when the user has
given some input.
Python String Formatting
To make sure a string will display as expected, we can format the result with the format() method.

String format()

The format() method allows you to format selected parts of a string.

Sometimes there are parts of a text that you do not control, maybe they come from a database,
or user input?

To control such values, add placeholders (curly brackets {}) in the text, and run the values
through the format() method:
Python String Formatting
( contd )
Example

Add a placeholder where you want to display the price:

price = 49
txt = "The price is {} dollars"
print(txt.format(price))

You can add parameters inside the curly brackets to specify how to convert the value:

Example

Format the price to be displayed as a number with two decimals:

txt = "The price is {:.2f} dollars"

Check out all formatting types in our String format() Reference.


Multiple Values
If you want to use more values, just add more values to the format() method:

print(txt.format(price, itemno, count))

And add more placeholders:

Example

quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
Index Numbers
You can use index numbers (a number inside the curly brackets {0}) to be sure the values are
placed in the correct placeholders:

Example

quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))

Also, if you want to refer to the same value more than once, use the index number:

Example

age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
Named Indexes
You can also use named indexes by entering a name inside the curly brackets {carname}, but
then you must use names when you pass the parameter values txt.format(carname =
"Ford"):

Example

myorder = "I have a {carname}, it is a {model}."


print(myorder.format(carname = "Ford", model = "Mustang"))
Python File Open
File handling is an important part of any web application.
Python has several functions for creating, reading, updating, and deleting files.

File Handling
The key function for working with files in Python is the open() function.
The open() function takes two parameters; filename, and mode.
There are four different methods (modes) for opening a file:
"r" - Read - Default value. Opens a file for reading, error if the file does not exist
"a" - Append - Opens a file for appending, creates the file if it does not exist
"w" - Write - Opens a file for writing, creates the file if it does not exist
"x" - Create - Creates the specified file, returns an error if the file exists
In addition you can specify if the file should be handled as binary or text mode
"t" - Text - Default value. Text mode
"b" - Binary - Binary mode (e.g. images)
Syntax
To open a file for reading it is enough to specify the name of the file:

f = open("demofile.txt")

The code above is the same as:

f = open("demofile.txt", "rt")

Because "r" for read, and "t" for text are the default values, you do not need to specify them.

Note: Make sure the file exists, or else you will get an error.
Open a File on the Server
Assume we have the following file, located in the same folder as Python:
demofile.txt
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!
To open the file, use the built-in open() function.
The open() function returns a file object, which has a read() method for reading the content of
the file:
Example
f = open("demofile.txt", "r")
print(f.read())
If the file is located in a different location, you will have to specify the file path, like this:
Example
Open a file on a different location:
f = open("D:\\myfiles\welcome.txt", "r")
print(f.read())
Read Only Parts of the File
By default the read() method returns the whole text, but you can also specify how many
characters you want to return:

Example

Return the 5 first characters of the file:

f = open("demofile.txt", "r")
print(f.read(5))

Read Lines

You can return one line by using the readline() method:

Example

Read one line of the file:

f = open("demofile.txt", "r")
print(f.readline())

By calling readline() two times, you can read the two first lines:


Read Lines ( contd )

Example
Read two lines of the file:

f = open("demofile.txt", "r")
print(f.readline())
print(f.readline())

By looping through the lines of the file, you can read the whole file, line by line:

Example
Loop through the file line by line:

f = open("demofile.txt", "r")
for x in f:
  print(x)
Close Files
It is a good practice to always close the file when you are done with it.

Example

Close the file when you are finish with it:

f = open("demofile.txt", "r")
print(f.readline())
f.close()

Note: You should always close your files, in some cases, due to buffering, changes made to a file
may not show until you close the file.

 
Python File Write
Write to an Existing File

To write to an existing file, you must add a parameter to the open() function:

"a" - Append - will append to the end of the file

"w" - Write - will overwrite any existing content

Example

Open the file "demofile2.txt" and append content to the file:

f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()

#open and read the file after the appending:


f = open("demofile2.txt", "r")
print(f.read())
Python File Write ( contd )

Example
Open the file "demofile3.txt" and overwrite the content:

f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()

#open and read the file after the appending:


f = open("demofile3.txt", "r")
print(f.read())

Note: the "w" method will overwrite the entire file.


Create a New File
To create a new file in Python, use the open() method, with one of the following parameters:

"x" - Create - will create a file, returns an error if the file exist

"a" - Append - will create a file if the specified file does not exist

"w" - Write - will create a file if the specified file does not exist

Example

Create a file called "myfile.txt":

f = open("myfile.txt", "x")

Result: a new empty file is created!

Example

Create a new file if it does not exist:

f = open("myfile.txt", "w")
Python Delete File

Delete a File
To delete a file, you must import the OS module, and run its os.remove() function:

Example

Remove the file "demofile.txt":

import os
os.remove("demofile.txt")
Check if File exist:
To avoid getting an error, you might want to check if the file exists before you try to delete it:

Example

Check if file exists, then delete it:

import os
if os.path.exists("demofile.txt"):
  os.remove("demofile.txt")
else:
  print("The file does not exist")
Delete Folder
To delete an entire folder, use the os.rmdir() method:

Example
Remove the folder "myfolder":

import os
os.rmdir("myfolder")

Note: You can only remove empty folders.


Python MySQL
Python can be used in database applications.

One of the most popular databases is MySQL.

MySQL Database
To be able to experiment with the code examples in this tutorial, you should have MySQL
installed on your computer.

You can download a free MySQL database at https://www.mysql.com/downloads/.


Install MySQL Driver
Python needs a MySQL driver to access the MySQL database.

In this tutorial we will use the driver "MySQL Connector".

We recommend that you use PIP to install "MySQL Connector".

PIP is most likely already installed in your Python environment.

Navigate your command line to the location of PIP, and type the following:

Download and install "MySQL Connector":

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>python -m pip install


mysql-connector-python

Now you have downloaded and installed a MySQL driver.


Test MySQL Connector
To test if the installation was successful, or if you already have "MySQL Connector" installed,
create a Python page with the following content:

demo_mysql_test.py:

import mysql.connector

If the above code was executed with no errors, "MySQL Connector" is installed and ready to be
used.
Create Connection
Start by creating a connection to the database.

Use the username and password from your MySQL database:

demo_mysql_connection.py:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword"
)

print(mydb)

Now you can start querying the database using SQL statements.
Python MySQL Create Database

Creating a Database
To create a database in MySQL, use the "CREATE DATABASE" statement:
Example
create a database named "mydatabase":
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")

If the above code was executed with no errors, you have successfully created a database.
Check if Database Exists
You can check if a database exist by listing all databases in your system by using the "SHOW
DATABASES" statement:
Example
Return a list of your system's databases:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword"
)

mycursor = mydb.cursor()

mycursor.execute("SHOW DATABASES")

for x in mycursor:
  print(x)
Or you can try to access the database when making the connection:
Check if Database Exists
( contd )
Example
Try connecting to the database "mydatabase":

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

If the database does not exist, you will get an error.


Python MySQL Create Table
Creating a Table
To create a table in MySQL, use the "CREATE TABLE" statement.
Make sure you define the name of the database when you create the connection
Example
Create a table named "customers":
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address


VARCHAR(255))")

If the above code was executed with no errors, you have now successfully created a table.
Check if Table Exists
You can check if a table exist by listing all tables in your database with the "SHOW TABLES"
statement:
Example
Return a list of your system's databases:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SHOW TABLES")

for x in mycursor:
  print(x)
Primary Key
When creating a table, you should also create a column with a unique key for each record.

This can be done by defining a PRIMARY KEY.

We use the statement "INT AUTO_INCREMENT PRIMARY KEY" which will insert a unique
number for each record. Starting at 1, and increased by one for each record.
Primary Key ( contd )
Example

Create primary key when creating the table:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY,


name VARCHAR(255), address VARCHAR(255))")

If the table already exists, use the ALTER TABLE keyword:


Primary Key ( contd )
Example

Create primary key on an existing table:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT


PRIMARY KEY")
Python MySQL Insert Into Table
To fill a table in MySQL, use the "INSERT INTO" statement.
Example
Insert a record in the "customers" table:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"


val = ("John", "Highway 21")
mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record inserted.")

Important!: Notice the statement: mydb.commit(). It is required to make the changes, otherwise no changes


are made to the table.
Insert Multiple Rows
To insert multiple rows into a table, use the executemany() method.

The second parameter of the executemany() method is a list of tuples, containing the data you
want to insert:

Example
Fill the "customers" table with data:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()
Insert Multiple Rows ( contd )
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
  ('Peter', 'Lowstreet 4'),
  ('Amy', 'Apple st 652'),
  ('Hannah', 'Mountain 21'),
  ('Michael', 'Valley 345'),
  ('Sandy', 'Ocean blvd 2'),
  ('Betty', 'Green Grass 1'),
  ('Richard', 'Sky st 331'),
  ('Susan', 'One way 98'),
  ('Vicky', 'Yellow Garden 2'),
  ('Ben', 'Park Lane 38'),
  ('William', 'Central st 954'),
  ('Chuck', 'Main Road 989'),
  ('Viola', 'Sideway 1633')
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "was inserted.")
Get Inserted ID
You can get the id of the row you just inserted by asking the cursor object.
Note: If you insert more than one row, the id of the last inserted row is returned.
Example
Insert one row, and return the ID:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"


val = ("Michelle", "Blue Village")
mycursor.execute(sql, val)

mydb.commit()

print("1 record inserted, ID:", mycursor.lastrowid)

 
Python MySQL Select From
Select From a Table
To select from a table in MySQL, use the "SELECT" statement:
Example
Select all records from the "customers" table, and display the result:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Note: We use the fetchall() method, which fetches all rows from the last executed statement.
Selecting Columns
To select only some of the columns in a table, use the "SELECT" statement followed by the
column name(s):
Example
Select only the name and address columns:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT name, address FROM customers")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Using the fetchone() Method
If you are only interested in one row, you can use the fetchone() method.
The fetchone() method will return the first row of the result:
Example
Fetch only one row:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchone()

print(myresult)
Python MySQL Where
Select With a Filter
When selecting records from a table, you can filter the selection by using the "WHERE" statement:
Example
Select record(s) where the address is "Park Lane 38": result:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Wildcard Characters
You can also select the records that starts, includes, or ends with a given letter or phrase.
Use the %  to represent wildcard characters:
Example
Select records where the address contains the word "way":
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers WHERE address LIKE '%way%'"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Prevent SQL Injection
When query values are provided by the user, you should escape the values.

This is to prevent SQL injections, which is a common web hacking technique to destroy or
misuse your database.

The mysql.connector module has methods to escape query values:


Prevent SQL Injection ( contd )
Example
Escape query values by using the placholder %s method:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers WHERE address = %s"


adr = ("Yellow Garden 2", )

mycursor.execute(sql, adr)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Python MySQL Order By

Sort the Result


Use the ORDER BY statement to sort the result in ascending or descending order.

The ORDER BY keyword sorts the result ascending by default. To sort the result in descending
order, use the DESC keyword.

Example
Sort the result alphabetically by name: result:
Python MySQL Order By
( contd )
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers ORDER BY name"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
ORDER BY DESC
Use the DESC keyword to sort the result in a descending order.

Example

Sort the result reverse alphabetically by name:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers ORDER BY name DESC"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Python MySQL Delete From By
You can delete records from an existing table by using the "DELETE FROM" statement:

Example

Delete any record where the address is "Mountain 21":

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()
Python MySQL Delete From By
( contd )
sql = "DELETE FROM customers WHERE address = 'Mountain 21'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "record(s) deleted")

Important!: Notice the statement: mydb.commit(). It is required to make the changes, otherwise


no changes are made to the table.

Notice the WHERE clause in the DELETE syntax: The WHERE clause specifies which
record(s) that should be deleted. If you omit the WHERE clause, all records will be deleted!
Prevent SQL Injection
It is considered a good practice to escape the values of any query, also in delete statements.

This is to prevent SQL injections, which is a common web hacking technique to destroy or
misuse your database.

The mysql.connector module uses the placeholder %s to escape values in the delete statement:

Example

Escape values by using the placeholder %s method:


Prevent SQL Injection
( contd )
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "DELETE FROM customers WHERE address = %s"


adr = ("Yellow Garden 2", )

mycursor.execute(sql, adr)

mydb.commit()

print(mycursor.rowcount, "record(s) deleted")

 
Python MySQL Drop Table
Delete a Table

You can delete an existing table by using the "DROP TABLE" statement:

Example

Delete the table "customers":

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "DROP TABLE customers"

mycursor.execute(sql)
Drop Only if Exist
If the the table you want to delete is already deleted, or for any other reason does not exist, you
can use the IF EXISTS keyword to avoid getting an error.

Example

Delete the table "customers" if it exists:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "DROP TABLE IF EXISTS customers"

mycursor.execute(sql)
Python MySQL Update Table

Update Table
You can update existing records in a table by using the "UPDATE" statement:

Example
Overwrite the address column from "Valley 345" to "Canyoun 123":

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)
Python MySQL Update Table
( contd )
mycursor = mydb.cursor()

sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley
345'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "record(s) affected")

Important!: Notice the statement: mydb.commit(). It is required to make the changes, otherwise


no changes are made to the table.

Notice the WHERE clause in the UPDATE syntax: The WHERE clause specifies which record
or records that should be updated. If you omit the WHERE clause, all records will be updated!
Prevent SQL Injection
It is considered a good practice to escape the values of any query, also in update statements.

This is to prevent SQL injections, which is a common web hacking technique to destroy or
misuse your database.

The mysql.connector module uses the placeholder %s to escape values in the delete statement:

Example
Escape values by using the placholder %s method:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)
Prevent SQL Injection
( contd )
mycursor = mydb.cursor()

sql = "UPDATE customers SET address = %s WHERE address = %s"


val = ("Valley 345", "Canyon 123")

mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record(s) affected")
Python MySQL Limit
Limit the Result
You can limit the number of records returned from the query, by using the "LIMIT" statement:
Example
Select the 5 first records in the "customers" table:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers LIMIT 5")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Start From Another Position
If you want to return five records, starting from the third record, you can use the "OFFSET"
keyword:
Example
Start from position 3, and return 5 records:
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers LIMIT 5 OFFSET 2")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
Python MySQL Join
Join Two or More Tables
You can combine rows from two or more tables, based on a related column between them, by
using a JOIN statement.
Consider you have a "users" table and a "products" table:
users
{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}
products
{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }
These two tables can be combined by using users' fav field and products' id field.
Example
Join users and products to see the name of the users favorite product:
import mysql.connector
Python MySQL Join
( contd )
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \
  users.name AS user, \
  products.name AS favorite \
  FROM users \
  INNER JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Note: You can use JOIN instead of INNER JOIN. They will both give you the same result.
LEFT JOIN
In the example above, Hannah, and Michael were excluded from the result, that is because
INNER JOIN only shows the records where there is a match.

If you want to show all users, even if they do not have a favorite product, use the LEFT JOIN
statement:

Example

Select all users and their favorite product:

sql = "SELECT \
  users.name AS user, \
  products.name AS favorite \
  FROM users \
  LEFT JOIN products ON users.fav = products.id"
RIGHT JOIN
If you want to return all products, and the users who have them as their favorite, even if no user
have them as their favorite, use the RIGHT JOIN statement:

Example

Select all products, and the user(s) who have them as their favorite:

sql = "SELECT \
  users.name AS user, \
  products.name AS favorite \
  FROM users \
  RIGHT JOIN products ON users.fav = products.id"

Note: Hannah and Michael, who have no favorite product, are not included in the result.

You might also like