Python
Python
How to Python
This is the fastest way to shift into python gear, more blinker fluids are listed after.
Indentation Matters
Python uses indentation instead of curly braces to define blocks of code. Incorrect indentation will throw an error.
if x > 5:
print("x is greater than 5") # Correct
print("This is outside the if block")No Semicolons
Python does not require semicolons at the end of statements.
x = 10 # No semicolon needed
Variables and Types
Python is dynamically typed, so you donβt need to declare variable types. Use type() to check the type of a variable.
x = 10 # Integer x = "Hello" # Now it's a string print(type(x)) # Output: <class 'str'>
Strings
Strings can be enclosed in single quotes, double quotes, or triple quotes for multi-line strings.
s = "Hello" s = 'Hello' s = """This is a multi-line string"""
Lists vs Arrays
Python uses lists instead of arrays. Lists are dynamic and can hold mixed types.
my_list = [1, 2, 3, "Hello"]
For Loops
Pythonβs for loop is more like a foreach loop. Use range() for traditional indexing.
for i in range(5): # 0 to 4
print(i)No Switch-Case
Python does not have a switch-case statement. Use if-elif-else or dictionaries instead.
choice = 2
if choice == 1:
print("Case 1")
elif choice == 2:
print("Case 2")
else:
print("Default case")Functions
Use def to define functions. No need to specify return types.
def add(a, b):
return a + bNo Increment/Decrement Operators
Python does not have ++ or --. Use += or -= instead.
x = 5 x += 1 # Equivalent to x++
Input and Output
Use input() to take user input (returns a string) and print() for output.
name = input("Enter your name: ")
print("Hello,", name)File Handling
Use open() to open files. Always close files with close() or use with for automatic closing.
with open("file.txt", "r") as file:
content = file.read()No Pointers
Python does not have pointers. Variables are references to objects.
a = [1, 2, 3] b = a # b references the same list as a b[0] = 10 print(a) # Output: [10, 2, 3]
Global Variables
Use the global keyword to modify global variables inside a function.
x = 10
def change_x():
global x
x = 20List Comprehensions
Python has a concise way to create lists using list comprehensions.
squares = [x**2 for x in range(10)]
No Main Function
Python scripts donβt require a main() function, but you can use if __name__ == "__main__": to define executable code.
def main():
print("Hello, World!")
if __name__ == "__main__":
main()Exception Handling
Use try-except for exception handling.
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero")Modules and Imports
Use import to include modules.
import math print(math.sqrt(16)) # Output: 4.0
No null
Python uses None instead of null.
x = None
Dictionaries
Pythonβs equivalent of a map or hash table is a dictionary.
my_dict = {"key1": "value1", "key2": "value2"}
print(my_dict["key1"]) # Output: value1Tuples
Tuples are immutable sequences.
my_tuple = (1, 2, 3)
Sets
Sets are unordered collections of unique elements.
my_set = {1, 2, 3}Lambda Functions
Python supports anonymous functions using lambda.
square = lambda x: x**2 print(square(5)) # Output: 25
No do-while Loop
Python does not have a do-while loop. Use while with a condition.
while True:
# Do something
if condition:
breakString Formatting
Use f-strings (Python 3.6+) for clean string formatting.
name = "Alice"
print(f"Hello, {name}!")Syntax
Variables & Data Types
# π Integer x = 10 # π Float y = 3.14 # π String name = "Alice" # π Boolean is_active = True # π NoneType data = None
Conditionals
x = 10
if x > 5:
print("Greater than 5")
elif x == 5:
print("Equal to 5")
else:
print("Less than 5")Loops
# π For loop
for i in range(5): # 0 to 4
print(i)
# π While loop
x = 5
while x > 0:
print(x)
x -= 1Operators
# β¦οΈArithmetic operators
# π Addition
print(10 + 3)
# π Exponentiation
print(10 ** 2)
# π Floor division
print(10 // 3)
# π Comparison operators
x = 5
print(x == 5)
print(x != 3)
# π Logical operators
if x > 0 and x < 10:
print("Valid range")Conditional Flow
# If-elif-else
age = 18
if age < 13:
print("Child")
elif age < 20:
# This will execute
print("Teen")
else:
print("Adult")
# Ternary operator
status = "Allowed" if age >= 18 else "Denied"Comments
# Single-line comment
"""
Multi-line comment
(using triple-quotes)
"""
def calculate():
'''Docstring comment
explaining function purpose'''Input/Output
# π Basic output
print("Hello", "World!", sep="-")
# π Formatted string (f-string)
name = "Alice"
print(f"Hello {name}!")
# π User input
age = input("Enter your age: ")
print(f"You're {age} years old")Common Data Structures
Strings
Strings are immutable sequences used for text manipulation.
String Manipulation and Methods
# π String manipulation
greeting = "Hello, world!"
# π Slicing a string
# β Hello (First 5 characters) βοΈ
print(greeting[:5])
# π String methods
# β ['Hello', 'world!'] π§©
split_str = greeting.split(", ")
# β 'Hello-world!' β‘οΈ
joined_str = "-".join(split_str)
# π Removing whitespaces
str_with_spaces = " lots of space "
print(str_with_spaces.strip())
# β 'lots of space' βοΈLists
Python lists are dynamic arrays (like ArrayList in Java or arrays in JavaScript).
List Creation, Indexing, and Slicing
# Creating a list with values nums = [10, 20, 30, 40] # Creating an empty list empty_list = [] # Mixed type list (integer, string, float) mixed = [1, "hello", 3.14] # Nested list (list inside a list) nested = [[1, 2], [3, 4]] # Accessing elements by index print(nums[0]) #first element) print(nums[-1]) #(last element) # Slicing the list (Start index inclusive, end exclusive) print(nums[1:3]) #from index 1 to 2 print(nums[:2]) #first 2 elements print(nums[-3:]) #last 3 elements
List Methods
# Append value to the list nums.append(50) # Insert value at a specific index nums.insert(2, 99) #inserts 99 at index # Pop removes and returns the last item nums.pop() # Remove first occurrence of value nums.remove(99) # Reverse the list nums.reverse() # Sort the list in ascending order nums.sort( # Sort in descending order nums.sort(reverse=True)
List Comprehensions
# Creating a list of squares squares = [x**2 for x in range(5)] # Creating a list of even numbers evens = [x for x in range(10) if x % 2 == 0]
Tuples
Tuples are immutable sequences, useful for fixed collections of items.
Tuple Creation and Unpacking
# Creating a tuple tup = (1, 2, 3) # Single element tuple (comma is needed) single_element_tuple = (10,) # Unpacking tuple values into variables a, b, c = tup # a=1, b=2, c=3 # Nested tuples nested_tup = ((1, 2), (3, 4))
Dictionaries
Dictionaries store data as key-value pairs.
Dictionary Creation and Methods
# Creating a dictionary
my_dict = {"name": "Alice", "age": 25, "city": "Wonderland"}
# Accessing value by key
print(my_dict["name"])
# Adding or updating a key-value pair
my_dict["age"] = 26 # Updates
my_dict["country"] = "Utopia" # Adds
# Removing a key-value pair
del my_dict["city"] # Removes 'city'
# Dictionary methods
keys = my_dict.keys()
values = my_dict.values()
items = my_dict.items()Sets
Sets are unordered collections of unique elements.
Set Operations
# Creating a set
my_set = {1, 2, 3, 4}
# Adding an element to the set
my_set.add(5)
# Removing an element from the set
my_set.remove(3)
# Union of sets
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1.union(set2)
# Intersection of sets
intersection = set1.intersection(set2)Functions
Functions allow you to group code into reusable blocks.
Function Definition & Usage
# Function definition with parameters and return value
def greet(name):
# Function that greets the person by name
return f"Hello, {name}!"
# Calling the function
print(greet("Alice"))Arguments
# Positional Arguments
def add(a, b):
return a + b
print(add(3, 4))
# Keyword Arguments
def greet(name, message="Hello"):
return f"{message}, {name}!"
print(greet(name="Bob", message="Good morning"))
print(greet(name="Alice"))
# Default Argument
def multiply(a, b=2):
return a * b
print(multiply(5)) # β 10 (b defaults to 2)
print(multiply(5, 3)) # β 15 (b is overridden)
# *args (Variable Positional Arguments)
def add_numbers(*args):
return sum(args)
print(add_numbers(1, 2, 3, 4))
# **kwargs (Variable Keyword Arguments)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="John", age=25, city="NY")Lambda Functions
# Lambda function definition (an anonymous function) square = lambda x: x**2 # Using the lambda function print(square(5))
Scope
# Local and Global Scope
x = 10 # Global variable π
def my_function():
x = 5 # Local variable inside function π
print(x) # β 5 (local variable is used here)
my_function()
print(x) # β 10 (global variable is accessed here)
# Nonlocal keyword to modify variable from enclosing scope
def outer_function():
x = 10 # Enclosing scope variable π¦
def inner_function():
nonlocal x # Refers to x in outer function's scope
x = 20 # Modifies x in enclosing scope
inner_function()
print(x) # β 20 (modified by inner_function)
outer_function()Object-Oriented Pythoning
Defining Classes & Objects
class Car:
def __init__(self, brand, model):
self.brand = brand # Instance variable
self.model = model
my_car = Car("Tesla", "Model S") # Creating an object
print(my_car.brand) # β TeslaInstance & Class Variables
class Employee:
company = "TechCorp" # Class variable
def __init__(self, name, salary):
self.name = name # Instance variable
self.salary = salary
emp1 = Employee("Alice", 60000)
emp2 = Employee("Bob", 75000)
print(emp1.company)
print(emp2.salary)Methods & Static Methods
class MathUtils:
# Instance method
def add(self, a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
math = MathUtils()
print(math.add(5, 3))
print(MathUtils.multiply(4, 2))Encapsulation & Private Variables
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Private variable
def get_balance(self):
return self.__balance # Access via method
account = BankAccount(5000)
print(account.get_balance())
# print(account.__balance)Inheritance
class Animal:
def speak(self):
return "Animal speaks"
# Inheriting from Animal
class Dog(Animal):
def speak(self):
return "Woof!"
d = Dog()
print(d.speak())Polymorphism
class Bird:
def make_sound(self):
return "Chirp!"
class Cat:
def make_sound(self):
return "Meow!"
def play_sound(animal):
print(animal.make_sound())
play_sound(Bird()) # β Chirp!
play_sound(Cat()) # β Meow!Dunder Methods (Magic Methods)
class Vector:
def __init__(self, x, y):
self.x, self.y = x, y
def __add__(self, other): # Overloading '+'
return Vector(self.x + other.x, self.y + other.y)
v1, v2 = Vector(3, 4), Vector(1, 2)
v3 = v1 + v2
print(v3.x, v3.y) # β 4, 6Common Errors
IndentationError
Fix : Use 4 spaces per indent (PEP 8 standard)
# β Wrong
def hello():
print("Hello")
# Mixed tab and space
# β
Correct
def hello():
print("Hello")TypeError: 'NoneType' object is not subscriptable
Fix : Ensure the function actually returns a list/dict
def get_data():
return None
data = get_data()
print(data[0]) # β TypeError
# β
Fix
if data:
print(data[0])File Handling
Opening & Closing Files
# Open file (default 'r' mode)
file = open('data.txt')
file.close()
# Using with statement (auto-closes)
with open('data.txt') as file:
passReading Files
# Read entire content
with open('data.txt') as f:
content = f.read()
# Read line by line
with open('data.txt') as f:
for line in f:
print(line.strip()) Writing Files
# Overwrite file ('w' mode)
with open('output.txt', 'w') as f:
f.write('New content')
# Write multiple lines
lines = ['First', 'Second']
with open('data.txt', 'w') as f:
f.writelines(lines) Appending to Files
# Add to existing file
with open('logs.txt', 'a') as f:
f.write('New log entry');File Modes
r - Read (default)
w - Write (overwrite)
a - Append
r+ - Read + Write
b - Binary mode
t - Text mode (default)
Working with CSV
import csv
# Read CSV
with open('data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# Write CSV
data = [['Name', 'Age'], ['Alice', 28]]
with open('data.csv', 'w') as f:
writer = csv.writer(f)
writer.writerows(data) JSON Handling
import json
# Write JSON
data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as f:
json.dump(data, f)
# Read JSON
with open('data.json') as f:
loaded = json.load(f) Exception Handling
try:
x = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero")
finally:
print("Cleanup actions here")Multi-Threading & Async
import asyncio
async def fetch_data():
print("Fetching...")
await asyncio.sleep(2) # Simulates delay
print("Done!")
asyncio.run(fetch_data())
Why Solo Dev?
This reference website is not for beginners
Solo Dev is strictly for devs who already know the game and need a beautiful cheat sheet on their second monitor which looks better than GeeksforGeeks
this portion goes away when you shrink the screen ;)
