Python Programs
Practice Code Examples
Hands-on Python programs to practice and master programming concepts. From basic to advanced level.
Python 3
✓ Practice
10+ Programs
Interview Prep
01
Basic Programs
#1
Check Prime Number
Basic
Python
def is_prime(n): if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True print(is_prime(17)) # True print(is_prime(4)) # False
#2
Factorial of a Number
Basic
Python
def factorial(n): if n == 0 or n == 1: return 1 result = 1 for i in range(2, n + 1): result *= i return result # Using recursion def factorial_rec(n): if n <= 1: return 1 return n * factorial_rec(n - 1) print(factorial(5)) # 120
#3
Fibonacci Sequence
Basic
Python
def fibonacci(n): if n <= 0: return [] if n == 1: return [0] seq = [0, 1] for i in range(2, n): seq.append(seq[-1] + seq[-2]) return seq print(fibonacci(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
#4
Reverse a String
Basic
Python
def reverse_string(s): return s[::-1] # Using two pointers def reverse_two_ptr(s): chars = list(s) left, right = 0, len(s) - 1 while left < right: chars[left], chars[right] = chars[right], chars[left] left += 1 right -= 1 return ''.join(chars) print(reverse_string("hello")) # "olleh"
#5
Check Palindrome
Basic
Python
def is_palindrome(s): s = s.lower().replace(" ", "") return s == s[::-1] # Two pointer approach def is_palindrome_tp(s): left, right = 0, len(s) - 1 while left < right: if s[left] != s[right]: return False left += 1 right -= 1 return True print(is_palindrome("A man a plan a canal Panama")) # True
02
Intermediate Programs
#6
Binary Search
Intermediate
Python
def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 arr = [1, 3, 5, 7, 9, 11] print(binary_search(arr, 7)) # 3 print(binary_search(arr, 2)) # -1
#7
Bubble Sort
Intermediate
Python
def bubble_sort(arr): n = len(arr) for i in range(n): swapped = False for j in range(0, n - i - 1): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] swapped = True if not swapped: break return arr arr = [64, 34, 25, 12, 22, 11, 90] print(bubble_sort(arr)) # [11, 12, 22, 25, 34, 64, 90]
#8
Count Word Frequency
Intermediate
Python
def word_frequency(text): words = text.lower().split() freq = {} for word in words: word = ''.join(c for c in word if c.isalnum()) if word: freq[word] = freq.get(word, 0) + 1 return freq # Using Counter from collections import Counter def word_freq_counter(text): words = text.lower().split() return Counter(words) text = "hello world hello python world" print(word_frequency(text))
#9
Linked List Implementation
Intermediate
Python
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node return current = self.head while current.next: current = current.next current.next = new_node def display(self): elements = [] current = self.head while current: elements.append(current.data) current = current.next return " -> ".join(map(str, elements)) ll = LinkedList() ll.append(1) ll.append(2) ll.append(3) print(ll.display()) # 1 -> 2 -> 3
03
Advanced Programs
#10
Merge Sort
Advanced
Python
def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left, right) def merge(left, right): result = [] i = j = 0 while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result.extend(left[i:]) result.extend(right[j:]) return result arr = [38, 27, 43, 3, 9, 82, 10] print(merge_sort(arr)) # [3, 9, 10, 27, 38, 43, 82]
#11
Quick Sort
Advanced
Python
def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) arr = [3, 6, 8, 10, 1, 2, 1] print(quick_sort(arr)) # [1, 1, 2, 3, 6, 8, 10]
#12
Stack Implementation
Advanced
Python
class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() raise IndexError("Stack is empty") def peek(self): if not self.is_empty(): return self.items[-1] raise IndexError("Stack is empty") def is_empty(self): return len(self.items) == 0 def size(self): return len(self.items) stack = Stack() stack.push(1) stack.push(2) stack.push(3) print(stack.pop()) # 3 print(stack.peek()) # 2
#13
Queue Implementation
Advanced
Python
from collections import deque class Queue: def __init__(self): self.items = deque() def enqueue(self, item): self.items.append(item) def dequeue(self): if not self.is_empty(): return self.items.popleft() raise IndexError("Queue is empty") def is_empty(self): return len(self.items) == 0 def size(self): return len(self.items) queue = Queue() queue.enqueue("A") queue.enqueue("B") queue.enqueue("C") print(queue.dequeue()) # A print(queue.dequeue()) # B
#14
Bank Account System (OOP)
Advanced
Python
class BankAccount: def __init__(self, balance=0): self.__balance = balance self.__history = [] def deposit(self, amount): if amount > 0: self.__balance += amount self.__history.append(f"Deposit: {amount}") def withdraw(self, amount): if 0 < amount <= self.__balance: self.__balance -= amount self.__history.append(f"Withdraw: {amount}") def get_balance(self): return self.__balance def show_history(self): return self.__history acc = BankAccount(1000) acc.deposit(500) acc.withdraw(200) print(acc.get_balance()) # 1300 print(acc.show_history())