Skip to main content

Command Palette

Search for a command to run...

Foundation in Python

Updated
8 min read
A

I am a Student, who finds beauty in simple things. I like to teach sometimes.

Python is frequently recommended as an initial programming language. Its design philosophy emphasizes code readability with a syntax that allows programmers to express concepts in fewer lines of code compared to languages like C++ or Java. This characteristic makes it accessible for individuals new to software development. Python's utility spans various domains, including web application development, data analysis, artificial intelligence, scientific computing, and automation, providing a broad base for future specialization. Furthermore, a large and active global community supports Python, resulting in extensive documentation, a wide array of third-party libraries, and readily available assistance through forums and Q&A websites.

Preparing Your Python Environment and Executing Code

To begin writing Python code, you first need the Python interpreter. You can obtain the official installer from the Python Software Foundation website (python.org) for your specific operating system.

Python code is typically written in files with a .py extension. You can create these files using any plain text editor (like Notepad on Windows, TextEdit on macOS, or Gedit on Linux) or more advanced Integrated Development Environments (IDEs) such as VS Code, PyCharm, or Spyder. IDEs often provide features like syntax highlighting, code completion, and debugging tools.

To run a Python script, you will generally use a command-line interface (Terminal on macOS/Linux, Command Prompt or PowerShell on Windows). Navigate to the directory where you saved your .py file and execute it using the command:

python your_script_name.py

For example, if your file is named hello.py, you would run python hello.py.

Core Programming Elements in Python

The following sections detail fundamental components of the Python language.

Output with print()

The built-in print() function is used to display data to the standard output device, which is typically the console or terminal window.

You can print strings, numbers, or the values of variables:

print("Hello, Python user!")
version = 3.11
print(version)
print(f"My current Python version is {version}") # Using an f-string for formatted output

User Input with input()

The input() function allows a program to pause and wait for the user to type some text via the keyboard. The entered text is then returned as a string.

user_name = input("Enter your name: ")
print(f"Hello, {user_name}")

Since input() always returns a string, if you need to perform numerical calculations with the input, you must convert it to a numerical type (e.g., int for integer, float for floating-point number):

age_str = input("Enter your age: ")
age_int = int(age_str) # Type conversion to integer
print(f"Next year, you will be {age_int + 1} years old.")

Variables and Data Types

Variables are names given to memory locations used to store data. In Python, you do not need to explicitly declare the type of a variable; the type is inferred at runtime based on the value assigned. This is known as dynamic typing.

Variable names should be descriptive and conventionally use snake_case (all lowercase with underscores separating words).

# Variable assignments
message = "This is a string"  # str
count = 100                   # int
price = 19.99                 # float
is_active = True              # bool

print(type(message)) # Output: <class 'str'>
print(type(count))   # Output: <class 'int'>

Common built-in data types include:

  • int: Whole numbers (e.g., -5, 0, 42).

  • float: Numbers with a decimal point (e.g., -3.14, 0.0, 2.718).

  • str: Sequences of characters, enclosed in single (') or double (") quotes (e.g., "Python", 'example').

  • bool: Logical values, either True or False.

Conditional Logic: if, elif, else

Conditional statements control the program's flow of execution based on whether certain conditions are true or false. Python uses indentation (typically four spaces) to define blocks of code associated with these statements.

  • The if statement executes a block of code if its condition is True.

  • The elif (else if) statement checks another condition if preceding if or elif conditions were False.

  • The else statement executes a block of code if all preceding if and elif conditions were False.

temperature = 25

if temperature > 30:
    print("It's a hot day.")
elif temperature > 20:
    print("It's a pleasant day.")
else:
    print("It might be cold.")

Conditions often involve comparison operators (== equal to, != not equal to, < less than, > greater than, <= less than or equal to, >= greater than or equal to) and logical operators (and, or, not).

Iteration Constructs: for and while Loops

Loops are used to execute a block of code repeatedly.

for Loops

A for loop iterates over the items of any sequence (such as a list or a string), in the order that they appear1 in the sequence.

# Iterating over a list
colors = ["red", "green", "blue"]
for color in colors:
    print(color)

# Iterating over a string
for character in "Python":
    print(character)

# Using range() to generate a sequence of numbers
for i in range(5):  # Generates numbers from 0 to 4
    print(i)

for j in range(1, 6): # Generates numbers from 1 to 5
    print(j)

The range(start, stop, step) function is commonly used with for loops to control the number of iterations.

while Loops

A while loop executes a block of code as long as its condition remains True.

count = 0
while count < 5:
    print(f"Count is: {count}")
    count += 1 # Increment count; essential to avoid an infinite loop

It's important to ensure that the condition of a while loop will eventually become False to prevent an infinite loop. The break statement can be used to exit a loop prematurely, and the continue statement skips the rest of the current iteration and proceeds to the next.

Fundamental Data Organization and Code Structuring

Python provides several built-in data structures for organizing collections of data and mechanisms for structuring code.

Lists

A list is an ordered, mutable (changeable) collection of items. Lists can contain items of different data types. They are defined by enclosing a comma-separated sequence of items in square brackets [].

# Creating a list
numbers = [1, 2, 3, 4, 5]
mixed_list = [10, "hello", 3.14, True]

# Accessing elements (indexing starts at 0)
print(numbers[0])      # Output: 1
print(mixed_list[1])   # Output: hello

# Slicing to get a sublist
print(numbers[1:4])    # Output: [2, 3, 4] (items from index 1 up to, but not including, index 4)

# Modifying lists
numbers.append(6)          # Adds 6 to the end: [1, 2, 3, 4, 5, 6]
numbers.insert(0, 0)       # Inserts 0 at index 0: [0, 1, 2, 3, 4, 5, 6]
numbers.remove(3)          # Removes the first occurrence of 3: [0, 1, 2, 4, 5, 6]
popped_element = numbers.pop(1) # Removes and returns item at index 1: popped_element is 1, numbers is [0, 2, 4, 5, 6]
print(f"List length: {len(numbers)}") # Output: List length: 5

Functions

Functions are reusable blocks of code that perform a specific action. They help organize code, make it more modular, and reduce redundancy. Functions are defined using the def keyword.

# Defining a function
def greet(name):
    """This function greets the person passed in as a parameter."""
    message = f"Hello, {name}!"
    return message

# Calling the function
user_greeting = greet("Alice")
print(user_greeting)  # Output: Hello, Alice!

# Function with multiple parameters and a default value
def add(x, y=0):
    return x + y

result1 = add(5, 3)  # x=5, y=3
result2 = add(7)     # x=7, y=0 (uses default value)
print(f"Result1: {result1}, Result2: {result2}") # Output: Result1: 8, Result2: 7

Functions can accept input values (arguments, corresponding to parameters in the function definition) and can return output values using the return statement. If return is omitted or used without a value, the function returns None. Variables defined inside a function have local scope, meaning they are only accessible within that function.

Dictionaries

A dictionary is an unordered collection of data stored as key-value pairs. Keys must be unique and immutable (e.g., strings, numbers, or tuples). Dictionaries are defined using curly braces {}.

# Creating a dictionary
student = {
    "name": "Bob",
    "age": 22,
    "courses": ["Math", "Physics"]
}

# Accessing values using keys
print(student["name"])         # Output: Bob
print(student.get("age"))      # Output: 22 (get() is safer, returns None if key not found)

# Adding or modifying entries
student["major"] = "Engineering" # Adds a new key-value pair
student["age"] = 23              # Updates the value for the key "age"
print(student)

# Removing entries
del student["courses"]
# or
# major = student.pop("major")

# Getting all keys, values, or key-value pairs (items)
print(list(student.keys()))    # Output: ['name', 'age', 'major'] (order may vary pre-Python 3.7)
print(list(student.values()))  # Output: ['Bob', 23, 'Engineering']
print(list(student.items()))   # Output: [('name', 'Bob'), ('age', 23), ('major', 'Engineering')]

File Input/Output Operations

Python provides built-in functions for creating, reading, and writing files. The primary function for working with files is open().

# Writing to a file (creates the file if it doesn't exist, overwrites if it does)
with open("example.txt", "w") as file: # "w" for write mode
    file.write("Hello, file world!\n")
    file.write("This is a second line.\n")

# Appending to a file (adds content to the end of an existing file, creates if not exists)
with open("example.txt", "a") as file: # "a" for append mode
    file.write("Appending this line.\n")

# Reading from a file
with open("example.txt", "r") as file: # "r" for read mode
    content = file.read() # Reads the entire file content into a string
    print("--- Full content ---")
    print(content)

with open("example.txt", "r") as file:
    print("--- Reading line by line ---")
    for line in file: # Iterating over the file object reads line by line
        print(line.strip()) # strip() removes leading/trailing whitespace, including newline

with open("example.txt", "r") as file:
    lines_list = file.readlines() # Reads all lines into a list of strings
    print("--- Content as list of lines ---")
    print(lines_list)

The with statement is the recommended way to work with files. It ensures that the file is automatically closed when the block is exited, even if errors occur. Common modes for open() include:

  • 'r': Read (default).

  • 'w': Write (truncates the file if it exists, creates it if it doesn't).

  • 'a': Append (adds to the end of the file, creates it if it doesn't).

  • 'r+': Read and write. You can also append b to the mode (e.g., 'rb', 'wb') to open the file in binary mode, which is used for non-text files like images or executables.

These foundational elements provide a solid base for writing a variety of Python programs. Consistent practice with these concepts is key to developing proficiency.

More from this blog

Aman Pathak

58 posts

Things I would speak if the person in front of me is me