Python basic to advance
43 subscribers
131 photos
98 links
Learn Python daily with bite-sized lessons, code examples, output previews, and fun quizzes. Perfect for beginners and enthusiasts!
Download Telegram
Day 30: Final Project Idea and Review \- Code & Output
๐Ÿš€ Day 31: Ready to elevate your Python architecture? Today, we're diving into **Architecting with Algebraic Data Types (ADTs)** and leveraging Python's powerful `match/case` statement for robust state machines! ๐ŸŽฏ Discover how to model complex domains with unparalleled clarity and reduce bugs by making invalid states impossible. This paradigm shift will transform how you handle control flow and state management, leading to cleaner, more maintainable code. Let's build truly robust systems! โœจ

```python
from dataclasses import dataclass
from typing import Union

# Simulate Algebraic Data Types (ADTs) using dataclasses
# Each class represents a distinct state (a "variant" of the sum type)

@dataclass(frozen=True)
class Red:
duration: int = 30 # seconds

@dataclass(frozen=True)
class Yellow:
duration: int = 5

@dataclass(frozen=True)
class Green:
duration: int = 45

# Our "ADT" for TrafficLightState is effectively Red | Yellow | Green
TrafficLightState = Union[Red, Yellow, Green] # Using Union for type hinting pre-Python 3.10, or | for 3.10+

def transition_light(current_state: TrafficLightState, action: str) -> TrafficLightState:
"""
Transitions the traffic light state based on the current state and action.
Uses Python's match/case for elegant state machine logic.
"""
if action == "NEXT":
match current_state:
case Red(duration):
print(f"๐Ÿšฆ Currently Red for {duration}s. Transitioning to Yellow.")
return Yellow()
case Yellow(duration):
print(f"๐Ÿšฆ Currently Yellow for {duration}s. Transitioning to Green.")
return Green()
case Green(duration):
print(f"๐Ÿšฆ Currently Green for {duration}s. Transitioning to Red.")
return Red()
case _: # Catch-all for unhandled states (should ideally be unreachable)
raise ValueError(f"Unknown traffic light state encountered: {current_state}")
else:
raise ValueError(f"Unknown action: {action}")

# Initial state
current_light = Red()
print(f"Initial State: {current_light}")

# Simulate transitions
current_light = transition_light(current_light, "NEXT")
print(f"New State: {current_light}n")

current_light = transition_light(current_light, "NEXT")
print(f"New State: {current_light}n")

current_light = transition_light(current_light, "NEXT")
print(f"New State: {current_light}n")

current_light = transition_light(current_light, "NEXT") # Go back to Yellow
print(f"New State: {current_light}")

```

Output example:
```
Initial State: Red(duration=30)
๐Ÿšฆ Currently Red for 30s. Transitioning to Yellow.
New State: Yellow(duration=5)

๐Ÿšฆ Currently Yellow for 5s. Transitioning to Green.
New State: Green(duration=45)

๐Ÿšฆ Currently Green for 45s. Transitioning to Red.
New State: Red(duration=30)

๐Ÿšฆ Currently Red for 30s. Transitioning to Yellow.
New State: Yellow(duration=5)
```

๐Ÿ’ก **Your Challenge:** Extend our `TrafficLightState`! Add a `FlashingYellow` state that can be reached from `Yellow` (perhaps on a specific `action` like "FLASH") and then transitions back to `Yellow` or `Red` depending on your logic. How would you update the `transition_light` function using `match/case`?

---
๐Ÿš€ Day 32 Alert! Get ready to dive deep into Python's core! Ever wondered how Python *really* executes your code? This session, "The Bytecode Whisperer," unpacks the Abstract Syntax Tree (AST) โ€“ the hidden blueprint of your programs. We'll learn to dissect it, manipulate it, and even rewrite it on the fly. Unleash truly dynamic behavior and explore extreme optimization techniques that go beyond conventional Python. Prepare to wield immense power! โœจ

```python
import ast

# Original Python code as a string
original_code = """
def greet():
message = "Hello, Pythonista!"
print(message)

greet()
"""

# 1. Parse the original code into an AST
tree = ast.parse(original_code)

# 2. Define a custom AST transformer
class GreetTransformer(ast.NodeTransformer):
def visit_Constant(self, node):
# Change string literals within the AST
if isinstance(node.value, str) and node.value == "Hello, Pythonista!":
return ast.Constant(value="Bonjour, cher dรฉveloppeur!")
return node

def visit_FunctionDef(self, node):
# Inject a print statement at the beginning of the function body
if node.name == "greet":
new_print_stmt = ast.Expr(
value=ast.Call(
func=ast.Name(id='print', ctx=ast.Load()),
args=[ast.Constant(value="--- AST Magic Ahead! ---")],
keywords=[]
)
)
node.body.insert(0, new_print_stmt) # Insert at the beginning
return self.generic_visit(node) # Ensure other nodes are visited

# 3. Transform the AST
transformer = GreetTransformer()
new_tree = transformer.visit(tree)

# 4. Fix missing line numbers and other metadata in the new tree
ast.fix_missing_locations(new_tree)

# 5. Compile the modified AST
compiled_code = compile(new_tree, '<string>', 'exec')

# 6. Execute the modified code
print("--- Executing AST-Transformed Code ---")
exec(compiled_code)
```

Output example:
```
--- Executing AST-Transformed Code ---
--- AST Magic Ahead! ---
Bonjour, cher dรฉveloppeur!
```

Challenge accepted! ๐Ÿš€ Can you modify the `GreetTransformer` to also inject another `print` statement at the *end* of the `greet` function's body, saying '--- AST Magic Complete! ---'?
Which of the following modules is primarily used for parsing Python source code into an Abstract Syntax Tree (AST)?
Anonymous Quiz
0%
dis
0%
ast
0%
inspect
0%
codecs
Hey guys we will start from day 1 from tomorrow ๐Ÿ—“๏ธ๐Ÿš€
๐Ÿ‘‹ Welcome to Day 1 of our Python learning journey! ๐Ÿ Today, we're taking our first step into the exciting world of programming with Python. We'll start with the absolute classic: "Hello, World!" This simple program is a tradition for every new language learner and helps you verify your setup is ready to go. Get ready to write your first line of code! ๐Ÿš€

---

```python
print("Hello, World!")
```

---

Output example:
Hello, World!

---

Small challenge:
Try modifying the code to print your name or a different greeting instead of "Hello, World!". For example, `print("Hello, [Your Name]!")` What happens if you forget the quotation marks around your text? ๐Ÿค”

---
Day 1: Introduction to Python with Hello World \- Code & Output
๐Ÿ‘‹๐Ÿ Day 2: Variables and Data Types! ๐Ÿ’ก

Ready to store some information? Today, we're diving into *variables* โ€“ your Python program's memory cells! Think of them as labeled containers where you can store different kinds of data. We'll also explore *data types*, which tell Python what kind of information is inside your container (like text, whole numbers, decimals, or true/false values). Let's get hands-on! ๐Ÿš€

---

### Python Code:

```python
# Storing information in variables
user_name = "Anna" # String (text)
user_age = 25 # Integer (whole number)
user_height = 1.68 # Float (decimal number)
is_active_user = True # Boolean (True or False)

print(f"Hello, {user_name}!")
print(f"You are {user_age} years old.")
print(f"Your height is {user_height} meters.")
print(f"Active user status: {is_active_user}")

# Let's check their types!
print(f"nType of user_name: {type(user_name)}")
print(f"Type of user_age: {type(user_age)}")
print(f"Type of user_height: {type(user_height)}")
print(f"Type of is_active_user: {type(is_active_user)}")

# Variables can be reassigned!
user_age = user_age + 1 # Happy birthday!
print(f"nAfter birthday, user_age is: {user_age}")
```

---

### Output example:

```
Hello, Anna!
You are 25 years old.
Your height is 1.68 meters.
Active user status: True

Type of user_name: <class 'str'>
Type of user_age: <class 'int'>
Type of user_height: <class 'float'>
Type of is_active_user: <class 'bool'>

After birthday, user_age is: 26
```

---

### Small Challenge: ๐Ÿง 
Create two variables: `product_name` (a string) and `product_price` (a float). Then, print a sentence like: "The [product_name] costs $[product_price]." Don't forget to use f-strings for easy formatting! โœจ

---

Keep coding and see you for Day 3! Happy learning! ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป

---

### Quiz Question:
Day 2: Variables and Data Types \- Code & Output
Which of the following is NOT a valid variable name in Python?
Anonymous Quiz
0%
my_variable
50%
_data
50%
1st_number
0%
userAge
๐Ÿš€ Day 3: Mastering Python Operators! ๐Ÿ’ป

Today, we're diving into the essential world of **operators** in Python! These special symbols perform operations on values and variables, allowing you to manipulate data, make comparisons, and control program flow. From basic arithmetic to logical conditions, understanding operators is fundamental to writing effective and dynamic Python code. Get ready to put them into action! โœจ

```python
# --- Python Operators Example ---

# Arithmetic Operators
a = 15
b = 4

print(f"Addition (a + b): {a + b}")
print(f"Subtraction (a - b): {a - b}")
print(f"Multiplication (a * b): {a * b}")
print(f"Division (a / b): {a / b}") # Float division
print(f"Floor Division (a // b): {a // b}") # Integer division (rounds down)
print(f"Modulus (a % b): {a % b}") # Remainder
print(f"Exponentiation (a ** b): {a ** b}") # a to the power of b

# Assignment Operators
x = 10
x += 5 # Equivalent to x = x + 5
print(f"x after x += 5: {x}")

# Comparison Operators
print(f"Is a equal to b? (a == b): {a == b}")
print(f"Is a greater than b? (a > b): {a > b}")
print(f"Is a not equal to 15? (a != 15): {a != 15}")

# Logical Operators
is_logged_in = True
has_permission = False
print(f"Can access resource? (is_logged_in and has_permission): {is_logged_in and has_permission}")
print(f"Is user active? (is_logged_in or has_permission): {is_logged_in or has_permission}")
print(f"Is not logged in? (not is_logged_in): {not is_logged_in}")
```

Output example:
Addition (a + b): 19
Subtraction (a - b): 11
Multiplication (a * b): 60
Division (a / b): 3.75
Floor Division (a // b): 3
Modulus (a % b): 3
Exponentiation (a ** b): 50625
x after x += 5: 15
Is a equal to b? (a == b): False
Is a greater than b? (a > b): True
Is a not equal to 15? (a != 15): False
Can access resource? (is_logged_in and has_permission): False
Is user active? (is_logged_in or has_permission): True
Is not logged in? (not is_logged_in): False

---

๐Ÿ’ก **Small Challenge:**
Can you write a Python expression using the logical `and` operator that evaluates to `True` only if a variable `age` is between 18 and 65 (inclusive)? Share your solution!

---
Day 3: Operators in Python \- Code & Output
What will be the output of `print(17 // 5)` in Python?
Anonymous Quiz
0%
3.4
50%
3
50%
2
0%
3.0
Here's your Telegram post for Day 4 of the Python learning series!

---

**Python Learning Series: Day 4 - Conditional Statements**

Day 4 is here! ๐Ÿš€ Today, we unlock the power of *decision-making* in Python with Conditional Statements: `if`, `elif`, and `else`.

Ever wanted your code to do different things based on certain conditions? ๐Ÿค” That's exactly what these statements let you do! They're fundamental for creating dynamic and intelligent programs. Let's dive into controlling your code's flow! ๐Ÿ‘‡

```python
# Example 1: Checking if a number is positive, negative, or zero
number = 5 # Try changing this to 0 or -3 and run the code!

if number > 0:
print("The number is positive.")
elif number == 0:
print("The number is zero.")
else:
print("The number is negative.")

print("-" * 20) # Separator for clarity

# Example 2: Simple age check
age = 18

if age >= 18:
print("You are an adult.")
else:
print("You are a minor.")
```

Output example:
```
The number is positive.
--------------------
You are an adult.
```

Small challenge:
Ready for a quick practice? ๐Ÿค” Write a Python script that takes a user's `input()` number and determines if it's "Even" or "Odd" using `if` and `else` statements! (Hint: The modulo operator `%` might be your friend here! ๐Ÿ˜‰)

---
Day 4: Conditional Statements \(if, elif, else\) \- Code & Output
What will be the output of the following Python code?
```python
score = 75 if score >= 90: result = "Excellent" elif score >= 70: result = "Good" elif score >= 50: result = "Average" else: result = "Fail" print(result) ```
Anonymous Quiz
0%
Good
0%
Excellent
0%
Average
0%
Fail
Here's your Telegram post for Day 5 of the Python learning series!

---

Hello Python Learners! ๐Ÿ‘‹ Day 5 is here, and we're diving into one of programming's superpowers: *loops*! ๐Ÿš€ Loops allow your code to repeat actions efficiently, saving you tons of time and effort. Whether you know exactly how many times you need to repeat something (`for` loop) or you need to keep going until a condition is met (`while` loop), loops are your best friends for automation. Let's make our programs dynamic! โœจ

```python
# Day 5: Loops (for and while)

# --- The 'for' Loop ---
# Used for iterating over a sequence (like a list, tuple, dictionary, set, or string)
# or other iterable objects. Great when you know how many times you want to loop.

print("--- For Loop Example: Iterating over a list ---")
fruits = ["apple", "banana", "cherry", "date"]
for fruit in fruits:
print(f"I love {fruit}!")

print("n--- For Loop Example: Using range() ---")
# range(start, stop, step) - stop is exclusive
for i in range(3): # This will give 0, 1, 2
print(f"Counting with for: {i}")

# --- The 'while' Loop ---
# Executes a block of code as long as a specified condition is true.
# Be careful not to create an infinite loop!

print("n--- While Loop Example ---")
countdown = 3
while countdown > 0:
print(f"Countdown: {countdown}...")
countdown -= 1 # Decrement the counter to eventually make the condition false
print("Lift off! ๐Ÿš€")

```

Output example:
```
--- For Loop Example: Iterating over a list ---
I love apple!
I love banana!
I love cherry!
I love date!

--- For Loop Example: Using range() ---
Counting with for: 0
Counting with for: 1
Counting with for: 2

--- While Loop Example ---
Countdown: 3...
Countdown: 2...
Countdown: 1...
Lift off! ๐Ÿš€
```

**Small Challenge:** ๐Ÿ’ช
Write a `for` loop that prints all even numbers from 2 to 10 (inclusive). Share your code in the comments! ๐Ÿ‘‡

---
Day 5: Loops \(for and while\) \- Code & Output