Study Notes: Beginner Python Guide

Study Notes: Beginner Python Guide

These notes show how a student might take notes while studying the Python Basics guide. Notice the active reading techniques, key concepts highlighted, and questions for later review.


Reading Session 1: Overview & Setup

Date: [Today’s date] Goal: Get big picture understanding of Python basics

My Key Questions Before Reading:

  • What makes Python different from other languages?
  • What should I focus on as a beginner?
  • How does Python handle data differently?

Big Picture Takeaways:

  • Python is high-level and readable - designed for humans first
  • “Batteries included” philosophy = lots of built-in functionality
  • Indentation matters (unlike Java) - this is how Python knows where code blocks start/end
  • Used for: web dev, data science, automation, scientific computing

Key Insight:

Python uses indentation instead of braces {} - this forces clean, readable code


Reading Session 2: Data Types Deep Dive

Date: [Date] Focus: Understanding Python’s type system

The Big Six Data Types (Need to Memorize):

Basic Types:

  • int - whole numbers (unlimited precision!)
  • float - decimal numbers (64-bit)
  • str - text in quotes
  • bool - True/False
  • None - represents “nothing” (like null in other languages)
  • complex - for math (probably won’t use much)

Collection Types:

  • list - ordered, changeable [1, 2, 3]
  • tuple - ordered, unchangeable (1, 2, 3)
  • dict - key-value pairs {"name": "Alice"}
  • set - unique items only {1, 2, 3}

Memory Trick:

LISTS = Live, Interactive, Stortable, Twistable, Sequences TUPLES = Totally Unchangeable Permanent Lists Exactly Same

Practice Questions for Later:

  1. When would I use a tuple instead of a list?
  2. What’s the difference between {} and set()?
  3. How do I remember which collections are mutable?

Reading Session 3: Variables & Constants

Date: [Date]

Key Concepts:

  • No type declaration needed - Python figures it out
  • Variables are like “labeled containers”
  • Constants use ALL_CAPS (just convention, not enforced)

Code Examples I Need to Remember:

1# Variable assignment
2name = "Alice"          # String
3age = 25               # Integer  
4height = 5.6           # Float
5is_student = True      # Boolean
6
7# Constants (convention only)
8PI = 3.14159
9MAX_USERS = 100

Questions to Review:

  • What happens if I try to change a “constant”?
  • How does Python decide what type a variable is?

Reading Session 4: Control Structures

Date: [Date] This is crucial stuff - controls program flow!

Conditionals (Making Decisions):

1if condition:
2    # do this
3elif other_condition:
4    # do this instead
5else:
6    # fallback option

Loops (Repeating Actions):

For loops - when you know how many times:

1for i in range(5):      # 0, 1, 2, 3, 4
2    print(i)
3
4for item in my_list:    # Go through each item
5    print(item)

While loops - when you don’t know how many times:

1while condition:
2    # keep doing this

Mind-Blowing Discovery:

List comprehensions - Python’s superpower!

1squares = [x**2 for x in range(10)]
2# Instead of writing a whole loop!

Practice Challenges:

  1. Write a program that counts from 1 to 100
  2. Create a list of even numbers using list comprehension
  3. Write a guessing game using while loop

Reading Session 5: Collections Deep Dive

Date: [Date]

When to Use Which Collection:

Lists - when you need:

  • Ordered data
  • Ability to change items
  • Duplicate values OK
  • Example: shopping cart items

Dictionaries - when you need:

  • Key-value relationships
  • Fast lookups
  • Example: student records (ID → student info)

Sets - when you need:

  • Unique items only
  • Don’t care about order
  • Example: unique website visitors

Code Patterns I Should Master:

List Operations:

1my_list = [1, 2, 3]
2my_list.append(4)       # Add to end
3my_list[0] = 42         # Change first item
4first = my_list[0]      # Get first item

Dictionary Operations:

1person = {"name": "John", "age": 30}
2person["name"] = "Jane"     # Change value
3name = person["name"]       # Get value
4age = person.get("age", 0)  # Safe get with default

Mental Model:

  • List = numbered lineup of items
  • Dictionary = phone book (name → number)
  • Set = box of unique items, no duplicates

Reading Session 6: Functions

Date: [Date]

Why Functions Matter:

  • Reusable code - write once, use many times
  • Organization - break big problems into small pieces
  • Testing - easier to test small functions

Function Patterns:

 1# Basic function
 2def add(a, b):
 3    return a + b
 4
 5# Function with default parameter
 6def greet(name="World"):
 7    return f"Hello, {name}!"
 8
 9# Advanced: *args and **kwargs (review later)
10def example(*args, **kwargs):
11    # args = tuple of positional arguments
12    # kwargs = dict of keyword arguments

Good Function Checklist:

  • Does one thing well
  • Has descriptive name
  • Has clear inputs/outputs
  • Would I understand this in 6 months?

Reading Session 7: Classes & Objects

Date: [Date] This is where it gets real - OOP time!

Mental Model:

  • Class = blueprint/template
  • Object = specific instance made from blueprint
  • Method = function that belongs to a class
  • Attribute = variable that belongs to an object

Basic Class Structure:

 1class Person:
 2    # Class variable (shared by all instances)
 3    species = "Human"
 4    
 5    # Constructor (runs when object is created)
 6    def __init__(self, name, age):
 7        self.name = name        # Instance variable
 8        self.age = age         # Instance variable
 9    
10    # Instance method
11    def get_name(self):
12        return self.name
13    
14    # String representation
15    def __str__(self):
16        return f"{self.name}, {self.age} years old"

Key Concepts:

  • self = refers to the current object instance
  • __init__ = constructor (automatic setup)
  • __str__ = how object appears when printed

Practice Ideas:

  1. Create a Student class with name, grade, subjects
  2. Create a BankAccount class with deposit/withdraw methods
  3. Make a Car class with make, model, start/stop methods

Reading Session 8: Exception Handling

Date: [Date]

Why This Matters:

  • Programs crash without proper error handling
  • Better user experience
  • Easier debugging

The try-except Pattern:

 1try:
 2    # risky code here
 3    result = 10 / 0
 4except ZeroDivisionError as e:
 5    # handle specific error
 6    print(f"Cannot divide by zero: {e}")
 7except Exception as e:
 8    # handle any other error
 9    print(f"Something went wrong: {e}")
10finally:
11    # always runs (cleanup code)
12    print("Cleaning up...")

Common Exceptions to Remember:

  • ZeroDivisionError - dividing by zero
  • ValueError - wrong value type
  • KeyError - dictionary key doesn’t exist
  • IndexError - list index out of range
  • FileNotFoundError - file doesn’t exist

Reading Session 9: Input/Output

Date: [Date]

Key Points:

  • input() always returns a string
  • Need to convert to numbers: int(input("Enter number: "))
  • print() is very flexible

Useful Patterns:

1# Getting user input
2name = input("What's your name? ")
3age = int(input("How old are you? "))
4
5# Formatted output
6print(f"Hello {name}, you are {age} years old")
7print("Hello", name, "you are", age, "years old")

Summary & Review Questions

Core Concepts I Need to Master:

  1. Data Types - Know when to use each type
  2. Control Flow - if/elif/else, for/while loops
  3. Collections - Lists, dicts, sets, tuples
  4. Functions - Writing reusable code
  5. Classes - Basic OOP concepts
  6. Error Handling - try/except blocks

Questions for Spaced Repetition:

  1. What’s the difference between list and tuple?
  2. When would I use a set instead of a list?
  3. How do I safely get a value from a dictionary?
  4. What does self mean in a class method?
  5. How do I handle multiple types of exceptions?
  6. What’s the difference between print() and return?

Next Study Session Goals:

  • Practice writing functions for common tasks
  • Create a small project using classes
  • Practice exception handling with file operations
  • Learn about modules and imports
  • Explore the standard library

Code Practice Ideas:

  1. Calculator - Use functions for each operation
  2. To-Do List - Use lists and dictionaries
  3. Student Grade Tracker - Use classes and exception handling
  4. Simple Game - Combine loops, conditionals, and user input

Reflection Notes

What clicked for me today:

  • Python’s indentation making code structure visual
  • How list comprehensions are just compact loops
  • The connection between dictionaries and real-world lookups

What I need to practice more:

  • Class design and when to use OOP
  • Exception handling in real scenarios
  • When to use each collection type

Questions to ask instructor:

  • Best practices for organizing larger programs
  • How to debug complex programs effectively
  • When to use classes vs just functions

Note: This study approach uses active reading, connects concepts to real-world examples, and creates review questions for spaced repetition. The goal is understanding, not memorization.