So far your code runs once and stops
What if you need to do something 100 times?
You are not going to write 100 lines
That is where loops come in
A loop runs a block of code over and over until you tell it to stop
This lecture covers:
Please open Telegram to view this post
VIEW IN TELEGRAM
A while loop keeps running as long as a condition is true
The moment it becomes false — the loop stops
count = 1
while count <= 5:
print(f"Count: {count}")
count += 1
print("Done")
Output:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Done
count += 1 means count = count + 1
We increase count each time so the loop eventually stops
If you forget to update count the loop runs forever
This is called an infinite loop — press Ctrl+C to stop it
Please open Telegram to view this post
VIEW IN TELEGRAM
A for loop repeats for each item in a sequence
It is cleaner and safer than while for most situations
fruits = ["apple", "banana", "mango"]
for fruit in fruits:
print(fruit)
Output:
apple
banana
mango
You can also loop over a string — it goes letter by letter:
for letter in "Python":
print(letter)
Please open Telegram to view this post
VIEW IN TELEGRAM
range() generates a sequence of numbers for you to loop over
for i in range(5):
print(i)
# prints 0, 1, 2, 3, 4
```python
for i in range(1, 6):
print(i)
# prints 1, 2, 3, 4, 5
python
for i in range(0, 10, 2):
print(i)
# prints 0, 2, 4, 6, 8 (step of 2)
`range(start, stop, step)
Stop is always excluded — range(1, 6) gives you 1 to 5
Please open Telegram to view this post
VIEW IN TELEGRAM
break — exits the loop immediately:
for i in range(10):
if i == 5:
break
print(i)
# prints 0, 1, 2, 3, 4 then stops
continue — skips the current iteration and moves to the next:
for i in range(10):
if i % 2 == 0:
continue
print(i)
# prints only odd numbers: 1, 3, 5, 7, 9
You will use break a lot in bots
For example — keep asking for input until the user types something valid
Please open Telegram to view this post
VIEW IN TELEGRAM
Remember the homework from last lecture? Now we make it loop:
secret = 42
attempts = 0
while True:
guess = int(input("Guess the number: "))
attempts += 1
if guess == secret:
print(f"Correct! You got it in {attempts} attempts")
break
elif guess > secret:
print("Too high, try again")
else:
print("Too low, try again")
while True means loop forever
The only way out is the break when they guess correctly
This is a pattern you will see everywhere in real code
Please open Telegram to view this post
VIEW IN TELEGRAM
Watch this after reading through all the posts
Python Full Course 2024 — freeCodeCamp
Covers while loops, for loops, lists, and escape sequences
Please open Telegram to view this post
VIEW IN TELEGRAM
Build a multiplication table generator:
number = int(input("Enter a number: "))
for i in range(1, 11):
print(f"{number} x {i} = {number * i}")Run it with a few different numbers and screenshot the output
Bonus — wrap it in a while loop so after printing the table it asks
"Do you want another? (yes/no)" and keeps going until they say no
Please open Telegram to view this post
VIEW IN TELEGRAM
Until now you stored one value in one variable
What if you need to store 100 values?
You are not making 100 variables
That is what lists are for
This lecture covers:
Please open Telegram to view this post
VIEW IN TELEGRAM
A list is a collection of values stored in one variable
You create it with square brackets
fruits = ["apple", "banana", "mango"]
numbers = [1, 2, 3, 4, 5]
mixed = ["Ahmed", 22, True, 9.99] # lists can hold any types
Each item has an index — a position number starting from 0
fruits = ["apple", "banana", "mango"]
print(fruits[0]) # apple
print(fruits[1]) # banana
print(fruits[2]) # mango
print(fruits[-1]) # mango — negative index counts from the end
This trips up beginners — the first item is index 0, not 1
Always remember — lists start at 0
Please open Telegram to view this post
VIEW IN TELEGRAM
Updating an item:
fruits = ["apple", "banana", "mango"]
fruits[1] = "grape"
print(fruits) # ['apple', 'grape', 'mango']
Adding items:
fruits.append("orange") # adds to the end
fruits.insert(1, "kiwi") # adds at index 1Removing items:
fruits.remove("apple") # removes by value
fruits.pop() # removes last item
fruits.pop(0) # removes item at index 0
del fruits[2] # deletes item at index 2Checking if something is in a list:
if "mango" in fruits:
print("Found it")
Please open Telegram to view this post
VIEW IN TELEGRAM
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
print(len(numbers)) # 8 — how many items
print(sorted(numbers)) # [1, 1, 2, 3, 4, 5, 6, 9] — sorted copy
print(numbers.count(1)) # 2 — how many times 1 appears
print(sum(numbers)) # 31 — adds all numbers
print(min(numbers)) # 1
print(max(numbers)) # 9
numbers.reverse() # reverses in place
numbers.sort() # sorts in place
Slicing — getting a portion of a list:
fruits = ["apple", "banana", "mango", "grape", "kiwi"]
print(fruits[1:3]) # ['banana', 'mango'] — index 1 to 2
print(fruits[:3]) # ['apple', 'banana', 'mango'] — from start to 2
print(fruits[2:]) # ['mango', 'grape', 'kiwi'] — from index 2 to end
Please open Telegram to view this post
VIEW IN TELEGRAM
This is where lists and loops combine — you will do this constantly
users = ["Ahmed", "Sara", "Ali", "Fatima"]
for user in users:
print(f"Hello {user}!")
If you also need the index:
for index, user in enumerate(users):
print(f"{index + 1}. {user}")
Output:
1. Ahmed
2. Sara
3. Ali
4. Fatima
enumerate() is incredibly useful — remember it
Please open Telegram to view this post
VIEW IN TELEGRAM
A tuple is exactly like a list but you cannot change it after creating it
You create it with round brackets instead of square
coordinates = (25.2048, 55.2708) # latitude, longitude
rgb = (255, 0, 0) # red color
You can read from it the same way as a list:
print(coordinates[0]) # 25.2048
But you cannot change it:
coordinates[0] = 30 # ERROR — tuples are immutable
When to use a tuple vs a list:
Please open Telegram to view this post
VIEW IN TELEGRAM
Watch this after reading through all the posts
Python Full Course 2024 — freeCodeCamp
Covers lists, for loops with lists, and string concatenation
Please open Telegram to view this post
VIEW IN TELEGRAM
Build a simple to-do list program:
todos = []
todos.append("Learn Python")
todos.append("Build a Telegram bot")
todos.append("Deploy my first project")
print("Your To-Do List:")
for index, task in enumerate(todos):
print(f"{index + 1}. {task}")
print(f"Total tasks: {len(todos)}")
Then extend it — ask the user to add their own tasks using input() in a loop
Stop when they type "done"
Then print the full list
Screenshot your output
Bonus — let the user also delete a task by number
Please open Telegram to view this post
VIEW IN TELEGRAM
Lists store items by position — index 0, 1, 2...
But sometimes you need to store data by name
Like a real dictionary — look up a word, get its meaning
That is exactly what Python dictionaries do
This lecture covers:
Please open Telegram to view this post
VIEW IN TELEGRAM