David Galiata's tech blog

Mario Python Cheatsheet

Published on
/6 mins read

When I first started learning Python, I found myself constantly Googling the basics. I'd make a little progress here and there, but found myself stuff stuck on simple, quick items. I think it's because a lot of examples use random numbers and lists, etc. that didn't stick with me. As a huge Nintendo and Mario fan, I created this fun cheatsheet that explains Python concepts using examples from Mario Bros.

Python Cheatsheet

Data Types

# Numbers
coins = 42            # integer
jump_height = 3.14    # float
star_power = 1 + 2j   # complex number
 
# Strings
character = "Mario"   # can use single or double quotes
mario_quote = """
It's-a me,
Mario!
"""
 
# Booleans
has_mushroom = True
is_small = False
 
# None type
empty_block = None    # represents absence of value

Variables

# Basic assignment
lives = 3
player_name = "Luigi"
 
# Multiple assignment
coins, stars, mushrooms = 100, 5, 2
 
# Variable naming rules:
mario_bros = "OK"      # Can use letters, numbers, underscores
_princess = "OK"       # Can start with underscore
1up = "NOT VALID"      # Cannot start with number

Operators

# Arithmetic
coins + bonus_coins    # Addition
lives - damage         # Subtraction
coins * multiplier     # Multiplication
points / divisor       # Division
coins // bowser        # Floor division
score % high_score     # Modulus (remainder)
mushroom ** power_up   # Exponentiation
 
# Comparison
mario == luigi         # Equal to
bowser != peach       # Not equal to
score > high_score    # Greater than
coins < target        # Less than
points >= threshold   # Greater than or equal to
lives <= max_lives    # Less than or equal to
 
# Logical
has_star and has_flower  # True if both are true
has_mushroom or is_fire  # True if at least one is true
not is_small             # Inverts boolean value

String Operations

# String concatenation
character = "Mario"
action = "jumps"
message = character + " " + action  # "Mario jumps"
 
# String methods
name = "bowser"
name.upper()          # "BOWSER"
name.capitalize()     # "Bowser"
name.replace('b', 'w')  # "wowser"
 
# String formatting
character = "Mario"
coins = 99
# f-strings (Python 3.6+)
print(f"{character} collected {coins} coins!")
 
# String slicing
world = "World 1-1"
world[0]      # 'W'
world[0:5]    # 'World'
world[-3:]    # '1-1'

Basic List Operations

# Creating lists
characters = ["Mario", "Luigi", "Peach", "Yoshi"]
inventory = ["Mushroom", 3, "Star", True]
 
# List operations
characters.append("Toad")     # Add to end
characters.pop()             # Remove and return last item
characters.insert(0, "Wario") # Insert at specific position
len(characters)             # Get length of list
 
# List slicing
mario_bros = characters[0:2]    # Get first two elements
reversed_chars = characters[::-1]  # Reverse the list

Tuples

# Creating tuples (immutable lists)
coordinates = (3, 5)  # Mario's position in level
pipe_location = (100, 200, "Underground")
single_item = (1,)  # Need comma for single-item tuple
 
# Accessing tuple elements
x, y = coordinates  # Tuple unpacking
world_coords = pipe_location[:2]  # First two elements
 
# Common tuple operations
len(pipe_location)  # Number of elements
"Underground" in pipe_location  # Check if value exists
mario_pos = coordinates + (0,)  # Combine tuples

Dictionaries

# Creating dictionaries
 
character_stats = {
    "Mario": {"lives": 3, "coins": 0, "power": "Fire"},
    "Luigi": {"lives": 3, "coins": 0, "power": "None"}
}
 
power_ups = {
    "Mushroom": "Super Mario",
    "Fire Flower": "Fire Mario",
    "Star": "Invincible"
}
 
# Accessing and modifying
mario_lives = character_stats["Mario"]["lives"]
power_ups["Ice Flower"] = "Ice Mario"  # Add new item
del power_ups["Mushroom"]  # Remove item
 
# Dictionary methods
all_powers = power_ups.keys()
power_effects = power_ups.values()
power_items = power_ups.items()  # Get key-value pairs
 
# Check if key exists
if "Star" in power_ups:
    print("Star power available!")

Sets

# Creating sets (unique items only)
available_characters = {"Mario", "Luigi", "Peach", "Yoshi"}
unlocked_worlds = {1, 2, 3}
 
# Set operations
available_characters.add("Toad")
available_characters.remove("Peach")
 
# Set mathematics
player1_items = {"Mushroom", "Star", "Coin"}
player2_items = {"Flower", "Mushroom", "Shell"}
 
both_have = player1_items & player2_items  # Intersection
all_items = player1_items | player2_items  # Union
unique_to_player1 = player1_items - player2_items  # Difference

Basic Functions

# Defining a function
def power_up(character):
    return f"{character} got a Super Star!"
 
# Function with default parameter
def collect_coins(amount=100):
    return f"Collected {amount} coins!"
 
# Function with multiple parameters
def calculate_score(coins, time_left):
    return coins * time_left
 
# Calling functions
power_up("Mario")              # "Mario got a Super Star!"
collect_coins()                # "Collected 100 coins!"
calculate_score(50, 120)       # 6000

For Loops

# Basic for loop
for character in ["Mario", "Luigi", "Peach"]:
    print(f"{character} is ready to play!")
 
# Range-based for loop
for world in range(1, 9):
    print(f"Starting World {world}")
 
# Looping through dictionaries
for character, stats in character_stats.items():
    print(f"{character} has {stats['lives']} lives")
 
# Enumerate for index and value
for level, boss in enumerate(["Bowser Jr", "Kamek", "Bowser"], 1):
    print(f"Level {level} Boss: {boss}")

While Loops

# Basic while loop
lives = 3
while lives > 0:
    print(f"Lives remaining: {lives}")
    lives -= 1
 
# Break and continue
coins = 0
while True:
    coins += 1
    if coins == 50:
        print("Got a 1-Up!")
        continue
    if coins >= 100:
        print("Extra life earned!")
        break
 
# Game-style loop
player_power = "Small"
while player_power != "Super":
    print("Looking for mushroom...")
    found_item = "Mushroom"  # Simulated item find
    if found_item == "Mushroom":
        player_power = "Super"
        print("Power up!")

Putting It All together

Here's an example to tie everything together.

# Track Mario's progress through a level
def play_level(level_number):
    player = {
        "character": "Mario",
        "power": "Small",
        "coins": 0,
        "position": 0
    }
    
    obstacles = [
        ("Goomba", 50),
        ("Pipe", 100),
        ("Koopa", 150),
        ("Flag", 200)
    ]
    
    for obstacle, position in obstacles:
        player["position"] = position
        
        if obstacle == "Flag":
            print("Level Complete!")
            break
            
        print(f"Encountered {obstacle} at position {position}")
        
        if player["power"] == "Small":
            print("Better find a mushroom!")
 
# Level progression system
worlds = {
    1: {"levels": 4, "unlocked": True},
    2: {"levels": 4, "unlocked": False},
    3: {"levels": 4, "unlocked": False}
}
 
for world_num, world_info in worlds.items():
    if not world_info["unlocked"]:
        continue
        
    print(f"World {world_num}")
    for level in range(1, world_info["levels"] + 1):
        print(f"Playing level {world_num}-{level}")

Final Thoughts

  • Use meaningful variable names - player_lives is better than pl

  • Use comments to explain WHY, not WHAT (the code should be self-explanatory)

  • Start with simple built-in functions before moving to complex libraries

  • Practice using the interactive Python shell (REPL) to test small code snippets

Remember, everyone begins with the basics. I'm a big believer in learning the fundamentals before branching out to more advanced topics. Coding has never been my strongest skill so practice and persistence are key. More to come as I have some fun project ideas in mind for 2025!