Introduction
Python is one of the most popular and beginner-friendly programming languages in the world. This comprehensive guide will take you from complete beginner to writing your first Python programs with confidence.
Why Learn Python?
- Easy to Learn: Python’s syntax is clean and readable
- Versatile: Used for web development, data science, AI, automation
- High Demand: One of the most sought-after programming skills
- Large Community: Extensive documentation and support
- Cross-Platform: Runs on Linux, Windows, and macOS
Installing Python on Linux
Ubuntu/Debian
# Check if Python is already installed
python3 --version
# Install Python 3 and pip
sudo apt update
sudo apt install python3 python3-pip python3-venv
# Install development tools
sudo apt install python3-dev build-essential
CentOS/RHEL/Fedora
# Check Python version
python3 --version
# Install Python 3 (Fedora)
sudo dnf install python3 python3-pip
# Install Python 3 (CentOS/RHEL)
sudo yum install python3 python3-pip
Setting Up Your Development Environment
Creating a Virtual Environment
# Create a virtual environment
python3 -m venv my_python_env
# Activate the environment
source my_python_env/bin/activate
# Deactivate when done
deactivate
Installing a Code Editor
Recommended editors for Python development:
- Visual Studio Code:
sudo snap install --classic code
- PyCharm Community:
sudo snap install pycharm-community --classic
- Vim with Python plugins
Python Basics
Your First Python Program
# hello.py
print("Hello, World!")
print("Welcome to Python programming!")
Run the program:
python3 hello.py
Variables and Data Types
# Numbers
age = 25
price = 19.99
complex_num = 3 + 4j
# Strings
name = "John Doe"
message = 'Learning Python is fun!'
# Booleans
is_student = True
is_graduated = False
# Lists
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
# Dictionaries
person = {
"name": "Alice",
"age": 30,
"city": "New York"
}
# Print variables
print(f"Name: {name}, Age: {age}")
Basic Operations
# Arithmetic operations
a = 10
b = 3
print(f"Addition: {a + b}")
print(f"Subtraction: {a - b}")
print(f"Multiplication: {a * b}")
print(f"Division: {a / b}")
print(f"Floor Division: {a // b}")
print(f"Modulus: {a % b}")
print(f"Exponentiation: {a ** b}")
# String operations
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name
print(f"Full name: {full_name}")
Control Structures
Conditional Statements
# if-elif-else
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(f"Score: {score}, Grade: {grade}")
Loops
# For loop
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(f"I like {fruit}")
# For loop with range
for i in range(1, 6):
print(f"Number: {i}")
# While loop
count = 0
while count < 5:
print(f"Count: {count}")
count += 1
# List comprehension
squares = [x**2 for x in range(1, 6)]
print(f"Squares: {squares}")
Functions
Defining Functions
# Basic function
def greet(name):
return f"Hello, {name}!"
# Function with default parameters
def calculate_area(length, width=1):
return length * width
# Function with multiple return values
def get_name_age():
return "Alice", 25
# Using functions
message = greet("Bob")
print(message)
area = calculate_area(5, 3)
print(f"Area: {area}")
name, age = get_name_age()
print(f"Name: {name}, Age: {age}")
Lambda Functions
# Lambda function
square = lambda x: x**2
print(f"Square of 5: {square(5)}")
# Using lambda with map
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print(f"Squared numbers: {squared_numbers}")
Working with Files
Reading Files
# Reading a file
try:
with open("sample.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("File not found!")
# Reading line by line
try:
with open("sample.txt", "r") as file:
for line in file:
print(line.strip())
except FileNotFoundError:
print("File not found!")
Writing Files
# Writing to a file
data = ["Line 1", "Line 2", "Line 3"]
with open("output.txt", "w") as file:
for line in data:
file.write(line + "n")
# Appending to a file
with open("output.txt", "a") as file:
file.write("This is an additional linen")
Error Handling
# Try-except blocks
def divide_numbers(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
print("Error: Cannot divide by zero!")
return None
except TypeError:
print("Error: Invalid input types!")
return None
finally:
print("Division operation completed.")
# Test the function
print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
print(divide_numbers("10", 2))
Working with Modules
Importing Modules
# Import entire module
import math
print(f"Square root of 16: {math.sqrt(16)}")
# Import specific functions
from datetime import datetime, date
current_time = datetime.now()
today = date.today()
print(f"Current time: {current_time}")
print(f"Today's date: {today}")
# Import with alias
import json as js
data = {"name": "John", "age": 30}
json_string = js.dumps(data)
print(f"JSON: {json_string}")
Creating Your Own Module
# math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
# main.py
import math_utils
result1 = math_utils.add(5, 3)
result2 = math_utils.multiply(4, 7)
result3 = math_utils.factorial(5)
print(f"Addition: {result1}")
print(f"Multiplication: {result2}")
print(f"Factorial: {result3}")
Object-Oriented Programming Basics
# Define a class
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
self.grades = []
def add_grade(self, grade):
self.grades.append(grade)
def get_average(self):
if self.grades:
return sum(self.grades) / len(self.grades)
return 0
def display_info(self):
avg = self.get_average()
print(f"Student: {self.name}")
print(f"Age: {self.age}")
print(f"Major: {self.major}")
print(f"Average Grade: {avg:.2f}")
# Create and use objects
student1 = Student("Alice", 20, "Computer Science")
student1.add_grade(85)
student1.add_grade(92)
student1.add_grade(78)
student1.display_info()
Practical Projects
Project 1: Simple Calculator
# calculator.py
def calculator():
while True:
print("n=== Simple Calculator ===")
print("1. Addition")
print("2. Subtraction")
print("3. Multiplication")
print("4. Division")
print("5. Exit")
choice = input("Enter your choice (1-5): ")
if choice == '5':
print("Goodbye!")
break
if choice in ['1', '2', '3', '4']:
try:
num1 = float(input("Enter first number: "))
num2 = float(input("Enter second number: "))
if choice == '1':
result = num1 + num2
print(f"Result: {num1} + {num2} = {result}")
elif choice == '2':
result = num1 - num2
print(f"Result: {num1} - {num2} = {result}")
elif choice == '3':
result = num1 * num2
print(f"Result: {num1} * {num2} = {result}")
elif choice == '4':
if num2 != 0:
result = num1 / num2
print(f"Result: {num1} / {num2} = {result}")
else:
print("Error: Cannot divide by zero!")
except ValueError:
print("Error: Please enter valid numbers!")
else:
print("Invalid choice! Please try again.")
if __name__ == "__main__":
calculator()
Project 2: File Organizer
# file_organizer.py
import os
import shutil
def organize_files(directory):
"""Organize files in a directory by their extensions"""
# Define file type categories
file_types = {
'images': ['jpg', 'jpeg', 'png', 'gif', 'bmp'],
'documents': ['pdf', 'doc', 'docx', 'txt', 'rtf'],
'videos': ['mp4', 'avi', 'mkv', 'mov', 'wmv'],
'audio': ['mp3', 'wav', 'flac', 'aac'],
'archives': ['zip', 'tar', 'gz', 'rar', '7z']
}
# Create category directories
for category in file_types.keys():
category_path = os.path.join(directory, category)
os.makedirs(category_path, exist_ok=True)
# Organize files
for filename in os.listdir(directory):
if os.path.isfile(os.path.join(directory, filename)):
file_extension = filename.split('.')[-1].lower()
moved = False
for category, extensions in file_types.items():
if file_extension in extensions:
src = os.path.join(directory, filename)
dst = os.path.join(directory, category, filename)
shutil.move(src, dst)
print(f"Moved {filename} to {category}/")
moved = True
break
if not moved:
# Create 'other' directory for unrecognized files
other_path = os.path.join(directory, 'other')
os.makedirs(other_path, exist_ok=True)
src = os.path.join(directory, filename)
dst = os.path.join(other_path, filename)
shutil.move(src, dst)
print(f"Moved {filename} to other/")
if __name__ == "__main__":
target_dir = input("Enter directory path to organize: ")
if os.path.exists(target_dir):
organize_files(target_dir)
print("File organization completed!")
else:
print("Directory not found!")
Next Steps
Advanced Topics to Explore
- Web Development: Flask, Django frameworks
- Data Science: NumPy, Pandas, Matplotlib
- Machine Learning: Scikit-learn, TensorFlow
- APIs: Requests library, REST APIs
- Database: SQLite, PostgreSQL integration
- Testing: unittest, pytest frameworks
Practice Resources
- Online Platforms: LeetCode, HackerRank, Codewars
- Projects: Build real applications
- Documentation: Read Python official docs
- Community: Join Python forums and groups
Best Practices
- Follow PEP 8: Python style guide
- Use meaningful variable names
- Write docstrings for functions
- Handle exceptions properly
- Use virtual environments
- Comment your code appropriately
- Test your code thoroughly
Conclusion
Python is an excellent language for beginners and offers endless possibilities for growth. Start with the basics, practice regularly, and gradually tackle more complex projects. The key to mastering Python is consistent practice and building real-world applications.
Remember: every expert was once a beginner. Take your time, be patient with yourself, and enjoy the journey of learning Python programming!