Sitemap
Olubiyi Ibrahim Enitan

Olubiyi Ibrahim Enitan

Business Executive & MIT Student | Data Analytics, AI & Technology Enthusiast | Exploring innovation, digital transformation, and real-world solutions.

My Week One Internship Journey with Dataraflow: Learning Python Through Practice

9 min readSep 10, 2026

--

  1. My internship experience has been thrilling and challenging. Week One took me through some practical programming exercises, assignments and assessments that challenged my knowledge of fundamental programming principles, problem solving and attention to detail.
  2. The week was dedicated to learning basic Python input and output, conditional statements, loops, functions, lists, strings, working with files, and algorithmic thinking. At first the tasks seemed easy, but as I worked on them I learned about the challenges of programming in the real world, and how important it is to be patient, to learn to debug, and to think in a logical manner.
  3. This article identifies my key problems that arose with Week One, how I overcame them and what I learned by completing the tasks, assignments and assessments.
Press enter or click to view image in full size

Challenges Encountered and How I Resolved Them

1. Terminal Path and Directory Mismatch

I had the first problem running Python scripts from the wrong directory in terminal. I got various errors like FileNotFoundError or "No such file or directory" whenever I tried to run the program multiple times, since I was not using the terminal to navigate on the folder where my python files were stored.

This problem was a good reminder that programming is much more than writing correct code, the development environment also matters.

For this, I had to learn how to navigate in the proper way in the terminal with the command `cd`. I checked that I'm in the right project folder or subdirectory of the project before I run any script. It boosted my confidence using the command line and gave me a greater understanding about file paths.

2. File Naming Issues Caused by Spaces

Another difficulty was related to file names with spaces. I have tried to run some scripts from the terminal, and the command failed due to termination by spaces between various arguments.
For instance, file name like: 1.Student Grades System.py
Untreated, it may lead to problems with running the program. I solved this by putting files names surrounded by double quotes (") like: The following command line invokes the Student Grades System.py file: python "1.Student Grades System.py" One other good tip learned – Do not use spaces in file names, use underscores or hyphens.
For example: student_grades_system.py This simplified my files, as well as their use and made them more consistent with the naming conventions of Python.

3. Invalid User Input and Type Conversion Errors

Various questions asked for numerical input (e.g., age, score, grade, quantity or calculator value). Python, however, has a default function for inputting values called input(), which will accept values as strings. This led to errors when the program was expecting a number but it was not.

For example, if a user were to type letters and not a number, the program might crash with a ValueError.

To resolve this, I explicitly converted other types (int() and float()) when needed. I also added a try-except block to catch errors in the input and not have the program end abruptly.

Learning this was important for me in terms of defensive programming. It is good practice to not assume that the user will always provide valid data in a good program. Rather, it is intended to direct the user, accept errors and keep running as long as possible.

4. Division by Zero Errors

Generally, when programming the exercises that involve calculation using calculators, I have run into another typical programming problem: division by zero. Division by zero is mathematically undefined, so the program crashed when 1 tried to divide by zero.

In order to correct this, I inserted a conditional check before I did the division:

`if num2 != 0:`

This enabled the program to test if the second number was valid or not before trying to operate on it. The program correctly returned an error message if the number had been zero.

This experience has given me an appreciation of the importance of considering edge cases before running logic. It also brought to mind that even simple programs must be validated to be reliable.

5. Off-by-One Errors in Loops and List Traversal

Some exercises involved using lists, indices and loops. Examples were the highest number in an array, the second highest number in an array, Fibonacci sequence generation, and reversing a string by hand.

Initially, I faced some off-by-one errors, particularly since Python is a zero-indexed language. In some cases, certain elements were not included in the loop or tried to access positions outside the range of the loop's elements.

For this, I tried to manually trace my loops with small sample data to solve the problem. I also learned to be more careful about the boundaries of `range()` and the places in lists.

6. Empty List and Boundary Case Handling

While working with list-based problems, I realized that some algorithms fail when the list is empty. For example, using `numbers[0]` as the initial comparison value works only if the list contains at least one item.

This made me more aware of boundary cases. A program may work correctly with normal input but fail when given unusual or minimal input.

To address this, I learned to check whether a list contains data before performing operations on it. This strengthened my understanding of validation and made my solutions more reliable.

7. Logic Errors in Manual String Reversal

One of the exercises required reversing a string without using Python slicing, such as `[::-1]`. This task was interesting because it forced me to think through the logic rather than relying on a built-in shortcut.

Initially, I appended characters in the wrong order, which produced incorrect output. After reviewing the logic, I realized that I needed to prepend each character to the reversed string.

The correct logic was to use:

`reversed_text = char + reversed_text`

instead of appending the character at the end.

This exercise improved my algorithmic thinking and helped me better understand how strings can be built step by step through iteration.

My Key Learnings from the Week One Tasks

1. Setting Up and Testing the Python Environment

The “Hello, World!” exercise helped me confirm that my Python environment was working correctly. It also helped me verify that my terminal path, file location, and script execution process were properly configured.

Although simple, this task was an important first step in building confidence with Python execution.

2. Working with User Input and Output

I learned how to collect user input using the `input()` function and display personalized output using formatted strings.

For example, collecting a user’s name and age helped me practice dynamic input and output. It also introduced me to the importance of clean formatting when displaying results to users.

3. Applying Conditional Logic

The even-or-odd number task helped me understand how conditional statements work in Python. By using the modulo operator `%`, I was able to determine whether a number was divisible by 2.

This strengthened my understanding of `if`, `elif`, and `else` statements and how they can be used to control program flow.

4. Using Loops for Repetition

Generating a multiplication table helped me understand how loops simplify repetitive tasks. Instead of writing multiple print statements manually, I used a `for` loop with `range()` to produce structured output dynamically.

Get Olubiyi Ibrahim Enitan’s stories in your inbox

Join Medium for free to get updates from this writer.

This showed me how loops make code cleaner, shorter, and easier to maintain.

5. Understanding Factorial Logic

The factorial exercise helped me understand how mathematical logic can be translated into code. By using a loop to multiply values repeatedly, I learned how accumulation works in programming.

This also improved my ability to break mathematical problems into step-by-step computational instructions.

6. Searching Through Lists

The task of finding the largest number in a list introduced me to linear search logic. I learned how to loop through list elements, compare values, and update a tracking variable when a larger number is found.

This helped me understand how algorithms process collections of data.

7. Working with Strings

Counting vowels in a string helped me practice string traversal. I learned how to loop through each character in a string and check whether it belongs to a defined group of vowels.

This exercise improved my understanding of membership testing, string methods, and case handling.

8. Writing and Using Functions

The function that returned the sum, difference, and product of two numbers helped me understand how functions make code reusable and organized.

It also introduced me to returning multiple values using tuples. This improved my understanding of how Python can package and unpack values efficiently.

Press enter or click to view image in full size

My Key Learnings from the Assignments

Beyond the basic tasks, the assignments helped me apply Python concepts to more practical scenarios.

1. Robust Input Validation

I learned that user input is unpredictable. A program must be designed to handle invalid entries, wrong data types, empty values, and unexpected behavior.

Using validation checks and exception handling helped me build more stable programs.

2. Practical Use of Data Structures

The assignments helped me understand how lists and dictionaries can be used in real-world scenarios. For example, lists are useful for storing ordered items, while dictionaries are useful for storing related information using key-value pairs.

This made data structures feel more practical and less abstract.

3. File Storage and Data Persistence

I learned how to save information into text files and retrieve it later. This introduced me to the concept of persistence, where data remains available even after the program stops running.

Using `with open()` also helped me understand safe file handling practices.

4. Command-Line and Environment Navigation

Working with VS Code and the terminal helped me become more comfortable with navigating folders, running scripts, and understanding project structure.

This is an important skill because programming is not only about writing code but also about knowing how to manage files and environments effectively.

5. Algorithmic Flow Control

The assignments helped me deepen my understanding of conditional branching, loops, error handling, and function scope.

I learned how these concepts work together to create programs that are interactive, logical, and user-friendly.

My Key Learnings from the Assessments

The assessments gave me the opportunity to test my understanding under more structured conditions. They helped me identify areas where I was confident and areas where I needed more practice.

1. Data Type Management

I became more fluent in working with integers, floats, strings, booleans, lists, and dictionaries. I also learned the importance of converting input values into the correct data type before using them in calculations.

2. Conditional Logic

I practiced using `if`, `elif`, and `else` statements to handle different program outcomes. This was especially useful in grading systems, calculators, and validation tasks.

3. Loop Control

I learned when to use `for` loops and when to use `while` loops. `For` loops were useful for known sequences, while `while` loops were better for user-driven programs where the number of repetitions was not fixed.

4. Choosing the Right Data Structure

The assessments helped me understand that different problems require different data structures. Lists are suitable for ordered collections, while dictionaries are better for storing labeled data.

Choosing the right structure made my programs cleaner and easier to understand.

5. Algorithm Design and Problem Solving

Tasks such as finding the second-largest number, checking palindromes, reversing strings, and generating sequences helped me improve my problem-solving approach.

I learned to break problems into smaller steps before writing code.

Conclusion

Week One of my internship was a valuable introduction to practical Python programming. The tasks, assignments, and assessments helped me move beyond theory into hands-on problem solving.

I encountered challenges related to terminal navigation, file naming, input validation, loops, list indexing, function scope, file handling, and error management. However, each challenge became an opportunity to learn and improve.

The biggest lesson I gained is that programming requires more than writing code that works once. It requires writing code that is reliable, readable, user-friendly, and resilient to errors.

This first week strengthened my foundation in Python and gave me more confidence to approach future tasks with a structured problem-solving mindset. As I continue through the internship, I look forward to building on these fundamentals and developing stronger skills in data science, machine learning, and generative AI.

--

--

Olubiyi Ibrahim Enitan
Olubiyi Ibrahim Enitan

Business Executive & MIT Student | Data Analytics, AI & Technology Enthusiast | Exploring innovation, digital transformation, and real-world solutions.