Which of the following statements about while loops is true in Python?
Anonymous Quiz
12%
A while loop always runs indefinitely.
68%
A while loop runs as long as a specified condition is True.
8%
A while loop can only be used with numbers.
12%
A while loop is the same as a for loop
Free Python Course | Programming Tutorials
Nested Loops A loop inside another loop is called a nested loop. The inner loop runs completely whenever the outer loop runs once. Example: for i in range(1, 4): for j in range(1, 4): print(f"i={i}, j={j}") Output: i=1, j=1 i=1, j=2 i=1, j=3 i=2…
Which statement about nested loops is correct?
Anonymous Quiz
19%
Nested loops always result in exponential time complexity.
15%
Nested loops are only used for working with multidimensional arrays.
59%
The inner loop executes completely every time the outer loop runs one iteration.
7%
Python does not support nested loops.
❤1
Introduction to Dictionaries
Syntax:
Example:
A dictionary in Python is an unordered collection of data in a key-value pair format. Unlike lists and tuples, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be of any immutable type (e.g., strings, numbers, tuples)
Syntax:
my_dict = {
"key1": "value1",
"key2": "value2",
...
}Example:
student = {
"name": "John",
"age": 21,
"courses": ["Math", "Physics"]
}
print(student) # Output: {'name': 'John', 'age': 21, 'courses': ['Math', 'Physics']}Accessing Dictionary Elements
Example:
Example:
You can access dictionary values by using their corresponding keys.
Example:
print(student["name"]) # Output: John
print(student["courses"]) # Output: ['Math', 'Physics']
To avoid KeyError when accessing keys that may not exist, you can use the get() method, which returns None or a default value if the key is not found.
Example:
print(student.get("age")) # Output: 21
print(student.get("grade", "Not Found")) # Output: Not FoundAdding and Modifying Dictionary Elements
Example:
You can add new key-value pairs or update existing ones using the assignment operator.
Example:
student["grade"] = "A" # Adding a new key-value pair
print(student) # Output: {'name': 'John', 'age': 21, 'courses': ['Math', 'Physics'], 'grade': 'A'}
student["age"] = 22 # Modifying an existing key-value pair
print(student) # Output: {'name': 'John', 'age': 22, 'courses': ['Math', 'Physics'], 'grade': 'A'}
👍2
Removing Elements from a Dictionary
Example:
Dictionaries provide several methods for removing elements:
pop(key): Removes the item with the specified key and returns its value.popitem(): Removes and returns the last inserted key-value pair.del keyword: Deletes a specific key-value pair or the entire dictionary.clear(): Removes all elements from the dictionary.Example:
# Using pop()
age = student.pop("age")
print(age) # Output: 22
print(student) # Output: {'name': 'John', 'courses': ['Math', 'Physics'], 'grade': 'A'}
# Using popitem()
last_item = student.popitem()
print(last_item) # Output: ('grade', 'A')
print(student) # Output: {'name': 'John', 'courses': ['Math', 'Physics']}
# Using del
del student["courses"]
print(student) # Output: {'name': 'John'}
# Using clear()
student.clear()
print(student) # Output: {}
Looping through Dictionaries
Examples:
You can loop through keys, values, or both in a dictionary.
Examples:
student = {
"name": "John",
"age": 21,
"courses": ["Math", "Physics"]
}
# Loop through keys
for key in student:
print(key)
# Loop through values
for value in student.values():
print(value)
# Loop through key-value pairs
for key, value in student.items():
print(f"{key}: {value}")Dictionary Methods
Examples:
Some useful dictionary methods:
keys(): Returns a list of all keys.values(): Returns a list of all values.items(): Returns a list of key-value pairs.update(): Updates the dictionary with elements from another dictionary or an iterable of key-value pairs.Examples:
print(student.keys()) # Output: dict_keys(['name', 'age', 'courses'])
print(student.values()) # Output: dict_values(['John', 21, ['Math', 'Physics']])
print(student.items()) # Output: dict_items([('name', 'John'), ('age', 21), ('courses', ['Math', 'Physics'])])
# Using update()
student.update({"name": "Jane", "age": 22})
print(student) # Output: {'name': 'Jane', 'age': 22, 'courses': ['Math', 'Physics']}
Introduction to Sets
Syntax:
Example:
A set is an unordered collection of unique elements. Sets are mutable, but their elements must be immutable (e.g., strings, numbers, tuples). Sets do not allow duplicate values.
Syntax:
my_set = {element1, element2, element3, ...}Example:
fruits = {"apple", "banana", "cherry"}
print(fruits) # Output: {'apple', 'banana', 'cherry'}Set Operations
Examples:
Sets are useful for mathematical operations like union, intersection, difference, and symmetric difference.
union(): Returns a set containing all unique elements from both sets.intersection(): Returns a set containing only the common elements.difference(): Returns a set containing elements that are only in the first set.symmetric_difference(): Returns a set containing elements in either set but not both.Examples:
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.union(set2)) # Output: {1, 2, 3, 4, 5, 6}
print(set1.intersection(set2)) # Output: {3, 4}
print(set1.difference(set2)) # Output: {1, 2}
print(set1.symmetric_difference(set2)) # Output: {1, 2, 5, 6}Modifying Sets
Examples:
Sets can be modified by adding or removing elements:
add(element): Adds an element to the set.remove(element): Removes an element from the set; raises KeyError if not found.discard(element): Removes an element from the set; does nothing if not found.clear(): Removes all elements from the set.pop(): Removes and returns a random element from the set.Examples:
fruits.add("orange")
print(fruits) # Output: {'apple', 'banana', 'cherry', 'orange'}
fruits.remove("banana")
print(fruits) # Output: {'apple', 'cherry', 'orange'}
fruits.discard("banana") # No error if "banana" is not in the set
print(fruits) # Output: {'apple', 'cherry', 'orange'}
fruits.clear()
print(fruits) # Output: set()Frozensets
Example:
A frozenset is an immutable version of a set. It cannot be modified after it is created.
Example:
frozen_set = frozenset([1, 2, 3, 4])
print(frozen_set) # Output: frozenset({1, 2, 3, 4})
# Attempting to modify a frozenset will raise an AttributeError
# frozen_set.add(5) # Raises AttributeError
👍2
Practice Exercises for Day 7
Exercise 1: Dictionary Manipulation
Exercise 2: Word Frequency
Exercise 3: Set Operations
Exercise 4: Unique Elements Finder
Exercise 5: Nested Dictionary
Exercise 1: Dictionary Manipulation
Create a dictionary with keys as names and values as marks. Add new entries, update marks, and delete a student entry.
Exercise 2: Word Frequency
Write a Python program to count the frequency of each word in a given sentence using a dictionary.
Exercise 3: Set Operations
Given two lists, create sets from them and perform union, intersection, difference, and symmetric difference operations.
Exercise 4: Unique Elements Finder
Write a Python program to find unique elements in a list using a set.
Exercise 5: Nested Dictionary
Create a nested dictionary to represent students' data, including their names, ages, and subjects. Write a program to print each student's details.
Homework for Day 7
Contact Book Program:
Set-Based Vowel Counter:
Dictionary Comprehensions:
Contact Book Program:
Write a Python program to create a contact book using a dictionary. The user should be able to add, delete, update, and search contacts.
Set-Based Vowel Counter:
Write a Python program to count the number of unique vowels in a given string using a set.
Dictionary Comprehensions:
Write a Python program to create a dictionary from a list of numbers where the keys are the numbers, and the values
What is a Function?
Syntax:
Example:
A function is a block of organized, reusable code that performs a single action or returns a value. Functions allow you to break down complex problems into smaller, manageable tasks.
Syntax:
def function_name(parameters):
# Function body
# Perform some action
return result
Example:
def greet():
print("Hello, World!")
greet() # Output: Hello, World!
Defining and Calling Functions
Defining a Function:
Calling a Function:
Example:
Defining a Function:
Use the def keyword followed by the function name and parentheses (). You can pass parameters inside the parentheses.
Calling a Function:
Simply use the function name followed by parentheses ().
Example:
def add(a, b):
return a + b
result = add(3, 5)
print(result) # Output: 8
Function Parameters and Arguments
- Parameters are variables defined in the function declaration.
- Arguments are the values passed to the function when it is called.
Types of Function Parameters:
1. Positional Arguments: Arguments passed to a function in a correct positional order.
2. Keyword Arguments: Arguments passed using the parameter name, making the order irrelevant.
3. Default Parameters: Parameters that have default values if no argument is provided during the function call.
4. Variable-Length Arguments: Allows passing a variable number of arguments (
Examples:
- Parameters are variables defined in the function declaration.
- Arguments are the values passed to the function when it is called.
Types of Function Parameters:
1. Positional Arguments: Arguments passed to a function in a correct positional order.
2. Keyword Arguments: Arguments passed using the parameter name, making the order irrelevant.
3. Default Parameters: Parameters that have default values if no argument is provided during the function call.
4. Variable-Length Arguments: Allows passing a variable number of arguments (
*args for non-keyword, **kwargs for keyword arguments).Examples:
def greet(name, message="Hello"):
print(f"{message}, {name}!")
greet("Alice") # Output: Hello, Alice!
greet("Bob", "Good Morning") # Output: Good Morning, Bob!
def display(*args):
print(args)
display(1, 2, 3) # Output: (1, 2, 3)
def show_details(**kwargs):
print(kwargs)
show_details(name="Alice", age=25) # Output: {'name': 'Alice', 'age': 25}
Return Statement
Example:
The return statement is used to exit a function and send back a value to the caller. If no return statement is used, the function returns None.
Example:
def multiply(x, y):
return x * y
result = multiply(4, 5)
print(result) # Output: 20
Scope and Lifetime of Variables
Local Scope: Variables declared inside a function, accessible only within that function.
Global Scope: Variables declared outside any function, accessible from anywhere in the program.
Example:
The scope of a variable determines the part of the program where the variable is accessible. Python has two main types of scope:
Local Scope: Variables declared inside a function, accessible only within that function.
Global Scope: Variables declared outside any function, accessible from anywhere in the program.
Example:
x = 10 # Global variable
def show():
y = 5 # Local variable
print(y)
show() # Output: 5
print(x) # Output: 10
# print(y) # Error: y is not defined
Recursion in Functions
Example: Factorial Calculation
A function that calls itself is known as a recursive function. Recursion is a common mathematical and programming concept that helps solve problems by breaking them down into simpler, smaller problems.
Example: Factorial Calculation
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # Output: 120