A Beginner’s Guide to Python Programming – Part 3

python learning programming

Ready to stop drowning in Python theory and actually build something useful? Welcome to Part 3, where we’re ditching the abstract examples and creating a real stock portfolio analyser that’ll make your spreadsheet-loving friends jealous.

What You’ll Learn (And Why It Matters)

This isn’t another “hello world” tutorial. You’ll build a complete Python application that:ƒ

  • Reads stock data from files (because who has time for manual entry?)
  • Calculates portfolio values automatically
  • Identifies your best-performing investments
  • Generates professional reports

Prerequisites: Basic Python knowledge (variables, loops, functions). If you’re still googling “what is a dictionary in Python,” maybe circle back to

Prerequisites: Basic Python knowledge (variables, loops, functions). If you’re still googling “what is a dictionary in Python,” maybe circle back to Python fundamentals first or check out 👉 Part 1 first .

Project Overview: Stock Portfolio Analyser in Python

Here’s what we’re building: a command-line tool that reads your stock holdings from a text file and spits out analysis that would make a financial advisor nod approvingly. No complex APIs, no web scraping – just clean, practical Python.

Why This Project Works for Learning

  • Real-world applicable: You’ll actually use this (or at least understand how trading apps work)
  • Multiple concepts: File I/O, data structures, string manipulation, and functions all in one project
  • Expandable: Perfect foundation for more advanced features later

Step 1: Creating Your Stock Data File

with open('portfolio.txt', 'w') as file:
    file.write("AAPL,100,150.25\\n")
    file.write("MSFT,50,280.50\\n")
    file.write("GOOGL,25,2750.65\\n")

First, let’s create our data source. In the real world, this might come from an API, but we’re keeping it simple:

What’s happening here? We’re creating a CSV-style file where each line contains: Stock Symbol, Number of Shares, Price per Share. Simple, readable, and easy to modify.

Step 2: Reading and Parsing Stock Data

Now for the fun part – turning that text file into Python data structures:

portfolio = {}
with open('portfolio.txt', 'r') as file:
    for line in file:
        symbol, shares, price = line.strip().split(',')
        portfolio[symbol] = {'shares': int(shares), 'price': float(price)}
print(portfolio)

Pro tip: Notice how we’re using a dictionary with nested dictionaries? This structure makes our data easy to access and manipulate. portfolio['AAPL']['shares'] is much cleaner than juggling multiple lists.

Step 3: Calculate Total Portfolio Value

Time for some math that actually matters:

total_value = sum(stock['shares'] * stock['price'] for stock in portfolio.values())
print(f"Total Portfolio Value: ${total_value:,.2f}")

The magic: This one-liner uses a generator expression to multiply shares by price for each stock, then sums everything up. The :.2f formatting gives us clean currency display with two decimal places.

Step 4: Find Your Star Performer

Which stock is carrying your portfolio?

most_valuable = max(portfolio, key=lambda x: portfolio[x]['shares'] * portfolio[x]['price'])
mv_value = portfolio[most_valuable]['shares'] * portfolio[most_valuable]['price']
print(f"Most Valuable Holding: {most_valuable} (${mv_value:,.2f})")

Lambda explained: That lambda x: portfolio[x]['shares'] * portfolio[x]['price'] is telling Python how to compare stocks. It’s like saying “judge each stock by its total value, not its symbol.”

Step 5: Generate a Professional Report

Let’s wrap everything in a clean function:

def generate_report(portfolio):
    print("\\nStock Portfolio Summary:")
    print("-----------------------")
    for symbol, data in portfolio.items():
        value = data['shares'] * data['price']
        print(f"{symbol}: {data['shares']} shares at ${data['price']:.2f} = ${value:,.2f}")
    print(f"\\nTotal Portfolio Value: ${total_value:,.2f}")
    print(f"Most Valuable Holding: {most_valuable} (${mv_value:,.2f})")
generate_report(portfolio)

Complete Python Stock Portfolio Analyser Code

Here’s the full, production-ready version:

def read_portfolio(filename):
    portfolio = {}
    with open(filename, 'r') as file:
        for line in file:
            symbol, shares, price = line.strip().split(',')
            portfolio[symbol] = {'shares': int(shares), 'price': float(price)}
    return portfolio
def calculate_total_value(portfolio):
    return sum(stock['shares'] * stock['price'] for stock in portfolio.values())
def find_most_valuable(portfolio):
    return max(portfolio, key=lambda x: portfolio[x]['shares'] * portfolio[x]['price'])
def generate_report(portfolio):
    total_value = calculate_total_value(portfolio)
    most_valuable = find_most_valuable(portfolio)
    mv_value = portfolio[most_valuable]['shares'] * portfolio[most_valuable]['price']
    print("\\nStock Portfolio Summary:")
    print("-----------------------")
    for symbol, data in portfolio.items():
        value = data['shares'] * data['price']
        print(f"{symbol}: {data['shares']} shares at ${data['price']:.2f} = ${value:,.2f}")
    print(f"\\nTotal Portfolio Value: ${total_value:,.2f}")
    print(f"Most Valuable Holding: {most_valuable} (${mv_value:,.2f})")
# Main program
portfolio = read_portfolio('portfolio.txt')
generate_report(portfolio)

Key Python Concepts You Just Mastered

File Handling: Reading external data into your programs (essential for real applications) Data Structures: Using dictionaries to organize complex information String Manipulation: Parsing and formatting text data Functions: Breaking code into reusable, testable chunks List Comprehensions: Writing efficient, readable loops

Common Beginner Mistakes to Avoid

  1. Forgetting to close files: Always use with open() – it handles cleanup automatically
  2. Type confusion: Remember to convert strings to integers/floats when reading from files
  3. Hard-coding values: Our functions are flexible and reusable, not tied to specific stock symbols

What’s Next?

You’ve built something genuinely useful, but we’re just getting started. In Part 4, we’ll dive into JSON data handling – because let’s face it, most real-world data comes in JSON format these days.

Coming up: Learn to pull data from APIs, handle complex nested structures, and transform messy real-world data into clean Python objects. We’ll build on this portfolio analyser to create something that could actually compete with those expensive trading platforms.

Try This at Home

Before moving on:

  1. Add more stocks to your portfolio.txt file
  2. Modify the code to calculate the percentage each stock represents
  3. Try adding error handling for missing files or malformed data

Trust me, the best way to learn Python is by breaking things and fixing them. Go ahead, experiment with the code – I’ll wait.


Ready for more Python tutorials? Subscribe for practical, no-nonsense Python guides that focus on building real applications instead of toy examples.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top