Reading Data From stdin
import sys
# Read all data as a string
data = sys.stdin.read()
# Split into a list of strings
data = data.split()
# Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to complete input
Python 3 - Read line by line
import sys
# Read single line
line = sys.stdin.readline().strip()
# Read multiple lines
for line in sys.stdin:
process(line.strip())
# Read two integers from first line
n_tables, n_queries = map(int, input().split())
# Read a list of integers from second line
counts = list(map(int, input().split()))
Reading Data in Bash Shell
# Redirect file to stdin
python3 main.py < tests/test.txt
# Pipe data to stdin
echo "1 2 3" | python3 main.py
# Here document
python3 main.py << EOF
1 2 3
4 5 6
EOF
Creating Lists of Numbers
n = 10
# Initialize all values to the same number (1D only)
# WARNING: Don't use this for 2D arrays - use list comprehension or numpy
l1 = [1] * n
# Result: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# Create sequence of numbers
l2 = list(range(n))
# Result: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Range with start and step
l3 = list(range(1, 11, 2))
# Result: [1, 3, 5, 7, 9]
# Create 2D array (correct way)
rows, cols = 3, 4
matrix = [[0] * cols for _ in range(rows)]
# Using numpy for 2D arrays
import numpy as np
matrix = np.zeros((3, 4))
Floor Division (Integer Division)
# Floor division rounds down to nearest integer
# Examples:
# floor(2.4) = 2
# floor(2.8) = 2
# floor(-2.4) = -3 # Note: rounds toward negative infinity
# Floor division in Python using //
3 // 2 # Result: 1
4 // 2 # Result: 2
5 // 2 # Result: 2
-7 // 2 # Result: -4
# Regular division
5 / 2 # Result: 2.5
# Using math.floor()
import math
math.floor(2.8) # Result: 2
Swapping Values of Two Variables
a = 1
b = 2
# Pythonic way (single line)
a, b = b, a
# Result: a = 2, b = 1
# Multiple variable swap
x, y, z = 1, 2, 3
x, y, z = z, y, x
# Result: x = 3, y = 2, z = 1
Line Continuation (Breaking Long Lines)
# Using backslash
a = 1 + \
1
a = dostuff(blahblah1, blahblah2, blahblah3,
blahblah4, blahblah5, blahblah6,
blahblah7)
# Conditional statements
if a == True and \
b == False:
pass
# String concatenation
a = '1' + '2' + '3' + \
'4' + '5'
# Using parentheses (preferred - no backslash needed)
a = ('1' + '2' + '3' +
'4' + '5')
# Long function calls
result = function_name(
argument1,
argument2,
argument3,
argument4
)
# Lists and dictionaries (no continuation needed)
my_list = [
1, 2, 3,
4, 5, 6
]
my_dict = {
'key1': 'value1',
'key2': 'value2'
}
Quick Debugging with pdb
# Insert breakpoint
import pdb; pdb.set_trace()
# Python 3.7+ built-in breakpoint
breakpoint() # Preferred method
# Common pdb commands:
# n (next) - Execute next line
# s (step) - Step into function
# c (continue) - Continue execution
# l (list) - Show current code
# p var - Print variable value
# pp var - Pretty print variable
# w (where) - Show stack trace
# u (up) - Move up in stack
# d (down) - Move down in stack
# b n - Set breakpoint at line n
# cl - Clear breakpoints
# q (quit) - Exit debugger
# Example usage
def buggy_function(x):
breakpoint() # Execution pauses here
result = x * 2
return result
Additional Useful Operations
List Comprehensions
# Create list with condition
squares = [x**2 for x in range(10)]
evens = [x for x in range(10) if x % 2 == 0]
# Nested comprehension
matrix = [[i*j for j in range(3)] for i in range(3)]
String Operations
# String formatting
name = "Python"
version = 3.9
print(f"{name} version {version}") # f-strings (Python 3.6+)
print("{} version {}".format(name, version)) # format method
# Multi-line strings
text = """
This is a
multi-line string
"""
Dictionary Operations
# Get with default value
d = {'a': 1}
value = d.get('b', 0) # Returns 0 if 'b' doesn't exist
# Dictionary comprehension
squares_dict = {x: x**2 for x in range(5)}
Enumerate and Zip
# Enumerate - get index and value
for i, value in enumerate(['a', 'b', 'c']):
print(f"{i}: {value}")
# Zip - combine lists
names = ['Alice', 'Bob']
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")