# Week Four Learning Review: Vim Navigation and Python Programming Foundations ## Introduction This week, I focused on improving my skills in two key areas: **Vim** and **Python programming**. I explored the core concepts and advanced usage of the **Vim text editor**, including its different modes, navigation shortcuts, macros, and configuration using `.vimrc`. Simultaneously, I strengthened my understanding of **Python**, learning about variables, data types, string formatting, arithmetic operations, user input, and building interactive scripts. This reflection highlights what I learned, how I applied it in practice, and how both tools are essential for efficient programming workflows. ## Vim Modes, Shortcuts, and Commands I explored the five primary modes in Vim: * **Normal Mode** – for navigation and performing actions like copying or deleting text. * **Insert Mode** – used to type or edit text. * **Command-line Mode** (`:`) – used to run commands such as saving or quitting. * **Visual Mode** (`v`) – used to highlight and manipulate text. * **Ex Mode** – an advanced mode for executing Vim scripts. ### Entering Insert Mode To enter Insert Mode, I learned several useful commands: * `i` – insert at cursor position * `I` – insert at the beginning of the line * `A` – append after the cursor * `O` – open a new line above * `S` – delete the current line and insert * `Insert` – toggles insert mode on some systems ### Displaying Line Numbers ```vim :set number " Show line numbers :set nonumber " Hide line numbers ``` ### Navigation Commands * `gg` – move to the top of the file * `G` – move to the bottom of the file * `25G` – jump to line 25 ### Basic Editing Commands * `x` – delete a character * `dd` – delete the current line * `v`, then `y` – yank (copy) * `v`, then `p` – paste ### Additional Concepts * `:!ls` – run external shell commands from within Vim * `.vimrc` – configuration file for customizing Vim settings * **Macros**: * `qa` – start recording into register `a` * `q` – stop recording * @a` – play the macro stored in register `a` ## Computer Science Foundations I learned about the **Input-Process-Output (IPO)** model, which explains how computers operate: * **Input** – receiving data from the user * **Process** – performing computations * **Output** – displaying results ## Introduction to Python Programming ### Python Characteristics * **Interpreted**: runs line by line * **Beginner-friendly**: uses simple and readable syntax * **Versatile**: used in AI, data science, game development, and web development ### Ways to Use Python * **Interactive mode** – typing commands directly into the terminal * **Scripting mode** – writing code in `.py` files and executing them ## Variable Naming and Data Types ### Naming Rules * Variables must begin with a letter or underscore (\_) * Cannot start with numbers or use Python keywords ### Naming Conventions * `snake_case`: `user_name` * `camelCase`: `userName` * `PascalCase`: `UserName` ### Data Types and Examples ```python # Integer age = 25 # Float height = 1.75 # String name = "Praise" # Dictionary user = {"name": "Praise", "age": 20} # Set items = {"apple", "banana"} ``` ### String Concatenation and Escape Sequences ```python # Concatenation first_name = "John" last_name = "Doe" print(first_name + " " + last_name) # Escape sequences print("Line1\nLine2") # New line print("Item\tPrice") # Tab space ``` ## String Formatting Examples ```python # Example 1: Using .format() method first_name = "Tom" surname = "Jerry" print("My name is {} {}".format(first_name, surname)) # Output: My name is Tom Jerry # Example 2: Using comma separation in print first_name = "Joy" surname = "Daniel" print("My name is", first_name, surname) # Output: My name is Joy Daniel # Example 3: Using f-string formatting (Python 3.6+) first_name = "Suzan" surname = "David" print(f"My name is {first_name} {surname}") # Output: My name is Suzan David # Example 4: Using string concatenation with + first_name = "Scholarstica" surname = "Paul" print("My name is " + first_name + " " + surname) # Output: My name is Scholarstica Paul ``` Each method is valid, but **f-strings** are recommended in modern Python for their readability and efficiency. ## User Input and Output ```python full_name = input("Enter your full name: ") user_age = int(input("Enter your age: ")) user_height = float(input("Enter your height: ")) user_hobbies = input("What are your hobbies? ") marital_status = input("Are you married? (yes or no): ") is_married = marital_status.strip().lower() == "yes" print(f"Full Name: {full_name}") print(f"Age: {user_age}") print(f"Height: {user_height}") print(f"Hobbies: {user_hobbies}") print(f"Married: {is_married}") ``` ## Performing Arithmetic Operations ```python a = 10 b = 5 print(a + b) # Addition print(a - b) # Subtraction print(a * b) # Multiplication print(a / b) # Division ``` ## Python Simulation: Microwave App ```python import time print(""" ************** Cohort III Microwave ************** 1. Open The Microwave 2. Put The Rice 3. Set the Time """) customer = {} username = input("Enter your name:\n>>> ") customer["username"] = username time_to_heat = int(input("Duration (minutes):\n>>> ")) customer["duration"] = time_to_heat customer["amount"] = time_to_heat * 1000 print("You are charged: #", customer["amount"], "only") print(f"Your rice will be ready in {time_to_heat} minute(s), {username}") print("4. I will let you know when it is ready...") time.sleep(time_to_heat * 60) print("5. Your food is ready.") ``` ## Summary This week strengthened my ability to work with both **text editors** and **Python scripts**. I now have a deeper understanding of how to: * Use Vim efficiently * Apply the IPO model in computing * Handle variables and data types in Python * Format strings in multiple ways * Collect and process user input * Create simple, interactive Python programs