# Hayden's Python Portfolio This is a portfolio of some of my favourite programs I wrote in Python during the summer of 2019, the summer I learned to program. **Note: Collatz Conjecture requires the MatPlotLib library, and Conway's Game of Life and the aquarium require PyGame.** *Programs will be listed with a date, a description, and the skills involved in making them.* --- ## Aquarium (19 August 2019) *requires PyGame* A simple aquarium. A random number of fish are spawned, each being an instance of the Fish class. Each is randomly assigned one of four breeds, and each has a randomly assigned speed. The fish will change directions when they come in contact with the screen's edge. Furthermore, each 50 millisecond cycle, each fish has a 1% chance (for each axis) of changing direction on its own, regardless of its position. - Pygame - Importing sprites - Random library - Object-oriented programming - Multiple instances of a class - Each instance is unique and randomized ## Binary to Decimal Converter (18 August 2019) A simple binary to decimal converter; will accept an arbitrtary amount of bytes of arbitrary lengths. - String slicing - Reversing - Concatenation - Iterables - Conditionals - Math operators - Powers ## Caesar Cypher (25 July 2019) Takes an encryption key (n) from 0-25 and moves each character ahead n spaces in the alphabet. If the letter reaches z, it wraps back to a. - Iterables - Conditionals - For loops - List wrapping - Functions ## Cash register (3 August 2019) Takes a sales total and amount tendered, then calculates change and lists the amount of each denomination of change to return. - Rounding - While Loops - Conditionals - Functions ## Collatz Conjecture (7 August 2019) *requires Matplotlib* Takes a positive integer (n), and depending on its parity, will either divide it by 2 or multiply it by 3 then add 1, and repeat the whole process until the integer is equal to 1. It will then display a graph where x is the number of steps and y is the value of n. - A Classic Algorithm - While loops - Conditionals - Math operators - Modulus - Floor division - Addition - Matplotlib Graphing Library ## Conway's Game of Life (22 August 2019) *requires Pygame* Generates 100 squares that can each be either living or dead; each 1-second "generation," if a living square has less than two or more than three living neighbours, it will die from either underpopulation or crowding. If a dead square has exactly three living neighbours, it will become living, via reproduction. - A cellular automaton - Random library - PyGame - Rectangles - Conditionals - Iteration - Object-oriented programming - Functions - Methods - Game loop ## Line/square drawing (27 July 2019) A GUI application that takes a number (n) and, depending on which button is pressed, will generate either n lines or n rectangles, all of random size, position, and colour. It will display the last action completed in a status bar at the bottom. - Tkinter GUI Library - Canvas - Buttons - Inputs - Random library - Object-Oriented Programming - For Loops - Functions - Methods ## Hangman (5 August 2019) A game of hangman that pulls words from a 100-word text file. - Random library - Reading from a text file - For loops - Game loop - Conditionals - Iterables - Functions ## Minefield/Minesweeper (20 July 2019) A game that draws a 5x5 grid, in which a random number of randomly placed mines are hidden. The goal is to clear the board without hitting a mine. - System commands - Random library - Wrapping - Iterables - Conditionals - Functions - Game loop ## Pig Latin (19 July) Converts a word into "Pig Latin," i.e. if the word begins with a vowel, it will add "ay" to the end, and if it begins with a consonant, it will move the first letter to the end of the word and then add "ay." - String slicing - String concatenation - Conditionals ## Recursive Guessing Game (24 August 2019) The user chooses a number between 0 and 100 (unknown to the computer), and the computer will guess it. A light project that I included because of recursion. - Recursion - Conditionals - Math operators - Floor division - Addition ## Monty Python's Python Soundboard (31 July 2019) A just-for-fun soundboard of clips from Monty Python's Life of Brian. Fun Fact: The Python Programming Language is named after Monty Python! - Tkinter GUI Library - Buttons - Lambda Expressions - Object-oriented programming - Playing audio files