Unit 9 • Lesson 10

Applying Advanced Concepts Together

Overview

You'll combine recursion, APIs, and data visualization to build small integrated projects. This final subtopic reinforces how Python's advanced tools work together to solve complex, real-world problems, demonstrating the power of combining techniques.

Intermediate 30–40 min

What You Will Learn in This Lesson

By the end of this lesson, you will know:

  • Combining concepts: How to use multiple advanced techniques together.
  • Project planning: Breaking down complex projects into steps.
  • Real-world applications: Building integrated systems.
  • Best practices: Organizing code and handling errors.
  • Problem-solving: Applying what you've learned to solve problems.

Combining Advanced Concepts

Real-world projects often combine multiple advanced concepts:

Example: Data Collection System

A complete system might use:

  • APIs: Fetch data from online services
  • JSON: Parse API responses
  • File handling: Save data to files
  • Error handling: Handle API failures gracefully
  • Automation: Run on a schedule
Example: Weather Data Collector
import requests
import json
from datetime import datetime

def collect_weather_data():
    try:
        # 1. Fetch data from API
        response = requests.get('https://api.weather.com/data')
        
        # 2. Parse JSON response
        data = response.json()
        
        # 3. Process data
        processed = {
            'temperature': data['temp'],
            'timestamp': datetime.now().isoformat()
        }
        
        # 4. Save to file
        with open('weather_data.json', 'a') as f:
            json.dump(processed, f)
            f.write('\n')
            
    except Exception as e:
        print(f"Error: {e}")

collect_weather_data()

Complete Integrated Project Example

Here's a complete example combining multiple concepts:

Complete Data Collection and Analysis System
import requests
import json
from datetime import datetime
from pathlib import Path

def collect_and_save_data(api_url, output_file):
    """Collect data from API and save to file"""
    try:
        # 1. Fetch data from API
        response = requests.get(api_url, timeout=5)
        response.raise_for_status()  # Raise exception for bad status codes
        
        # 2. Parse JSON response
        data = response.json()
        
        # 3. Add timestamp
        data['collected_at'] = datetime.now().isoformat()
        
        # 4. Save to JSON file
        output_path = Path(output_file)
        with open(output_path, 'w') as f:
            json.dump(data, f, indent=2)
        
        print(f"Data saved to {output_file}")
        return data
        
    except requests.exceptions.RequestException as e:
        print(f"API error: {e}")
        return None
    except json.JSONDecodeError:
        print("Error: Invalid JSON response")
        return None
    except Exception as e:
        print(f"Unexpected error: {e}")
        return None

# Usage
data = collect_and_save_data('https://api.example.com/data', 'data.json')

What This Example Shows

This example combines:

  • API requests: Fetching data from external sources
  • JSON parsing: Converting API responses to Python objects
  • File handling: Saving data persistently
  • Error handling: Handling different types of errors gracefully
  • pathlib: Modern path handling
  • datetime: Adding timestamps

Project Planning Steps

When building integrated projects, follow these steps:

1

Define Requirements

What should the project do? What data does it need? What's the end goal?

2

Break Into Steps

Divide the project into smaller, manageable tasks. Each task should be testable independently.

3

Choose Tools

Select the right libraries and techniques for each step. Consider efficiency and ease of use.

4

Build and Test

Implement each part, test as you go. Don't wait until the end to test!

5

Integrate

Combine all parts into a working system. Handle errors between components.

6

Refine

Test the complete system, fix bugs, improve error handling, and optimize performance.

Real-World Project Ideas

Here are project ideas that combine multiple advanced concepts:

Weather Dashboard

Fetch weather data from API, parse JSON, save to file, visualize with matplotlib, display trends over time.

Data Logger

Collect data periodically, save to CSV/JSON files, handle errors gracefully, generate reports automatically.

File Organizer

Use pathlib to organize files, handle errors, log operations, automate cleanup tasks.

API Data Pipeline

Fetch from multiple APIs, parse JSON, validate data, save to files, handle rate limits and errors.

Practice: Integrated System

Try It Yourself

Try simulating an integrated system:

Press Run to see output

What happened? You simulated collecting data, adding metadata (timestamp), and formatting it for storage. In a real system, you'd also fetch from an API and save to a file!

Code Organization Best Practices

When building integrated projects, organize your code well:

Organization Tips

  • Separate concerns: Keep API calls, file operations, and data processing in separate functions
  • Error handling: Handle errors at appropriate levels - catch API errors where you make requests, file errors where you read/write
  • Configuration: Store settings (API URLs, file paths) in variables or config files
  • Documentation: Add docstrings to functions explaining what they do
  • Modularity: Break large projects into multiple files or modules
Well-Organized Integrated System
import requests
import json
from datetime import datetime
from pathlib import Path

# Configuration
API_URL = "https://api.example.com/data"
OUTPUT_FILE = "collected_data.json"

def fetch_data(api_url):
    """Fetch data from API"""
    try:
        response = requests.get(api_url, timeout=5)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"API error: {e}")
        return None

def process_data(data):
    """Process and enrich data"""
    if not data:
        return None
    data['processed_at'] = datetime.now().isoformat()
    data['source'] = 'api'
    return data

def save_data(data, filename):
    """Save data to JSON file"""
    try:
        with open(filename, 'w') as f:
            json.dump(data, f, indent=2)
        print(f"Data saved to {filename}")
        return True
    except Exception as e:
        print(f"Error saving file: {e}")
        return False

# Main workflow
def main():
    data = fetch_data(API_URL)
    processed = process_data(data)
    if processed:
        save_data(processed, OUTPUT_FILE)

if __name__ == "__main__":
    main()

Modular Design

Breaking your code into functions makes it easier to test, debug, and maintain. Each function has a single responsibility, making the code clearer and more reusable.

Testing Integrated Systems

When building integrated systems, test each component:

1

Test Components Separately

Test each function independently before integrating them.

2

Test Error Cases

Test what happens when APIs fail, files don't exist, or data is invalid.

3

Test Integration

Test the complete workflow from start to finish.

4

Test Edge Cases

Test with empty data, very large data, and unexpected formats.

Summary

In this lesson, you learned:

  • Combining concepts: Use multiple techniques together to build complete systems
  • Project planning: Break projects into steps for better organization
  • Real-world applications: Build integrated systems that solve actual problems
  • Best practices: Organize code, handle errors, and document your work
  • Problem-solving: Apply learned concepts creatively to solve problems
  • Code organization: Separate concerns, use functions, and keep code modular
  • Testing: Test components separately and together

Remember

The power of Python comes from combining its many features. Start with simple projects and gradually build more complex systems that integrate multiple concepts! Practice building integrated projects to master these skills.

End-of-Lesson Exercises

Think about these questions to reinforce what you've learned:

Exercise 1: Integrated Projects

How would you build a data collection system that combines APIs, JSON parsing, and file handling?

Exercise 2: Project Ideas

What project could you build that combines multiple advanced concepts from Unit 9?