LAB OBJECTIVES

In this lab, you will first select and install a current distribution of Linux to be used as a host machine. You will NOT be required to setup Virtual Machines for this lab (that will be covered in a future lab). You will then setup your Python scripting environment on your host machine, including the setup the of python libraries and also the setup of a user-friendly interactive Python environment called ipython. You will also install additional framework tools (such as git, vim, and tmux) to be used in later labs.

After selecting an appropriate text editor to use, then you will start to create Python scripts to learn basic operations such as: printing text, using variables, and performing math operations.

INVESTIGATION 1: INSTALLING LINUX VM

PART 1 - Installing Your Linux Distribution

Since Python runs independently regardless of the Linux distribution, you have some flexibility of which Linux OS to use.

The stable version of Centos 7 - release 1161 will be chosen to be supported for this course. The purpose for this is to allow all students to use a consistent red-hat based OS, and to lower the amount of new linux distros that need to be learned by students. This should be the default choice for this course, as it allows for the course to run longer before getting outdated with new software and updates.

Centos 7 comes with python 2.7, which means that this version of Python is NOT optimal immediately after OS install. However, not teaching python 2.7 would be a mistake, since so many programs and operating systems still depend on python 2. It is recommended that students note general improvements that are being made in Python2 (as well as Python3.

Regardless of the Linux distribution you decide to use for this course, this lab will be using and referring to the current version of Centos7 (Graphical Desktop) for our main Linux machine. When creating your VM, refer to the Details / Minimum Requirements section above for assistance. When you have finished the installation of Centos7, you may proceed to the next step.

Unit Evaluation ScriptsEach Part (within an 'Investigation) is referred to as a Unit. Each Unit will require that the student download and run a Unit Evaluation Script, which provides the OPS435 student "real-time feedback" of their completed work.This feedback is not considered to be perfect or fool-proof; however, it may provide feedback (hints) in case a student gets stuck or experiences an error when performing administration tasks or when creating their Python scripts. These unit evaluation scripts can also be used to confirm that the student's Python script is on the right track, and provide a consist record of their Python scripting progress throughout their labs.

Issue the following commands (as a regular user) in order to setup, download and run the first unit evaluation script:

Next, you will install a couple of useful applications called tmux and screen. They are referred to as terminal multiplexers. If you plan to spend a lot of time in the terminal, this powerful tool will help you get it done. Lets install it and plan to use it later:

You will be required to use a text editor in order to create and modify your Python scripts. There are many text editors that provide various features to become more comfortable and productive during your Python coding sessions.

Below is a listing of several common text editors and their features.

Selecting an Appropriate Text EditorVim (recommended text editor for labs)vim is a powerful text editor for system administration and programming tasks. All of the shortcuts and commands you've learned over the years will help you edit programs efficiently. Vim can be modified to become a full programming environment with all the necessary features.

AtomThis text editor is easy to use and contains powerful tools that comes with everything your need immediately. Atom allows for deep customization from everything from complete functionality changes to just changing the theme.

SublimeInsert discussion here

Installing vim(Vi IMproved) will give us syntax highlighting and allow for advanced customization for terminal editing.Issue the following command to either install vim or confirm that it has already been installed:

yum install vim-common vim-enhanced # Install vim

Python pip is a package manager specifically for Python. While it is usually not recommended to install software outside of dnf or yum, sometimes the only way to get a specific or latest version will be through pip:

What is a Git?In the dictionary, git is defined as "an unpleasant or contemptible person". In the IT industry on the other hand, Git refers to a version control system that allows you to track any changes made to files and programs (a more modern version of RCS - Revision Control System). The benefit to using git is primarily found when it's used with multiple people, sharing and working on code together. While that is not how we will be using it in this course, you may find some benefits in using it for managing multiple versions of the same program or for backing up your code onto the internet. Check out bitbucket for a free private code repository.

IPython will be one of the tools we will use the most. Lets install it. You will learn more about it in the next section:

Before moving on to the next step make sure you identify any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may procede to the next step.

Make notes for all of your Investigation 1 (part1) observations in your lab log book, and proceed to investigation 2.

INVESTIGATION 2: USING THE "IPYTHON" CLI

IPython is an interactive environment that allows us to run python code line by line as we write it. This will also act like a bash shell prompt allowing usres to enter many Bash shell commands. However, the commands that we will be running are lines of python code. You will notice this by seeing an [IN] prompt where to enter commands and an [OUT] prompt that will display output from issued commands. We will start creating scripts out of the code within this IPython environment.

PART 1 - Common Ipython Commands and Features

Using Magic Functions

Lets begin by running some python code in the ipython interactive shell. This is a advanced python shell, similar to the bash shell that you have been using throughout the Linux courses. Throughout these labs the term command can also refer to these "magical functions".

Perform the following steps:

To access the ipython shell, issue the following command:

ipython3

Now we are now inside the IPython environment. We can run some basic bash commands within this shell by issuing IPython magic functions.

Lets try a few commands out now:

ls
pwd
cd ~/
ls

Remember: You are not using Python here, instead, these are aliases for Bash shell commands that IPython gives you access to. What you are actually using is bash, but not all bash commands are available in the IPython environment.

Lets find out which ones are available, type the following command into the IPython shell:

alias

We should now have a list of all the bash commands available in IPython. Shortly, we will go over how to add new bash commands into this environment, but you must remember that theses commands are only here to assist in your python scripting - we are NOT here to learn bash commands.

Next lets add a new bash command that seems to be missing from this list:

alias vim vim

Run the vim command to see that it works, then exit your vim editing session without saving.

The vim command will give us our much needed syntax highlighting, while we are editing scripts from within the IPython environment. Unfortunately, these magic alias functions do not save in between sessions when defined temporarily, this creates a problem since you would have to create them every time you start IPython. It will instead display an error message indicating that the alias command does not exist:

exit
ipython3
vim

You should notice an error message indicating invalid syntax. This occurs since you need to create a config file to make this alias persist in-between sessions. You need to exit your ipython session in order to edit this configuration file.

Exit your current IPython session:

exit

Now, create a new ipython alias configuration file and add the following content to it:

vim ~/.ipython/profile_default/startup/00-alias.ipy

Place your newly defined alias inside this file:

alias vim vim

Save and exit the file. Now let's return to our IPython shell and confirm that our alias is available right away:

ipython3
vim

At this point vim should open successfully and you should now understand how to create new IPython aliases and store them persistently. Use these aliases to customize your environment with any bash commands you thing IPython is missing.

Exit vim and return to the IPython shell.

Lets setup a directory structures for completing and organizing labs. These should be the locations to store your lab scripts. Try using TAB to help speed up the issuing of the following commands:

If you are interested in finding more information about other magic functions in IPython, then within the IPython shell, and enter the following (press the letter q to exit this function):

magic

This resource will appear OVERWHELMING (a huge amount of information)! As we move throughout this course, you will slowly use different magic functions from here, but we will never use all of them. They cover a huge range of different tasks, while we are writing code, allowing us to interactively inspect the Python we are writing and running. Lets move on for now.

Issue the following command to exit your ipython session:

exit

In the future to see if ctrl-d works instead of issuing the exit command to quit the ipython shell. Perform the following steps to evaluate this unit. NOTE: Running this evaluation script will give you an error, read this error message to see if you can figure out why. This is happening because we are checking a lab script file that we HAVE NOT created yet, so these errors are ok for now. But run these check scripts regularly as you work through the labs, they may give you hints if you get stuck.

Make notes for observations in your lab log book, and proceed to investigation 3.

INVESTIGATION 3: WRITING PYTHON SCRIPTS

During this investigation we will start writing our very first python scripts. These will be very basic and help us practice syntax and foundation skills, such as: outputting text to the screen, storing data inside variables, and using math operators.

PART 1 - Common Introductory Python Functions

Printing Text

Lets start IPython interpreter and start writing some python code.

Perform the following steps:

Issue the following commands:

ipython3
cd ~/ops435/lab1
pwd
ls

Our first python code we will write is the print function. A function is code that has been defined in another location. Functions can take arguments, use these arguments in some way, and then usually return a result. The first function we will use is the "print()" functions, it's sole purpose is to output information to the screen.

At the prompt, issue the following python function:

print()

You will notice that nothing happened when we ran this "print()" function. This is because we didn't pass any arguments to it, lets try again.

Issue the following function:

print('hello world')

This time we should now see that the python function "print()" has outputted to the screen the words 'hello world'. In python a word or a bunch of characters like 'hello world' is called a 'string'. So what we did above is, passed a string as a argument to the print function. These words are important for understanding and talking about different aspects of code.

Creating the introductory "Hello World" Script

You will learn to create a simple python script in this section. This python script will just print the text "hello world". The "hello world" an old traditional first program students usually are taught to create, which is based on the first programming example from the first C programming text co-written by Dennis Ritchie, the creator of the C programming language and Brian Kernighan. You will learn how to run the python script in the ipython3 shell as well as learn how to run the python script from the bash shell.

Perform the following steps:

Using a text editor, open a new text file called lab1a.py:

vim ~/ops435/lab1/lab1a.py

Write the following code into our python file.

#!/usr/bin/env python3
# Any line that starts with a "#" is also known as a comment,
# these lines are ignored by the python interpreter even if
# they contain code. The very first line is called a Shebang line,
# it is used to tell the system which interpreter to
# use(python2, python3, bash, etc).
# Description: This program will output "hello world" to the screen
print('Hello world')

Save the file and quit vim. We will now go over the process of manually running this python script. Both in the Bash shell and in the IPython shell.

Now lets try running the script directly from the IPython shell by issuing the follwoing commands:

run ~/ops435/lab1/lab1a.py

Your python script should have run, if you have any errors you should check that you typed the script in exactly. Be careful of extra spaces, symbols, letters, or lowercase/uppercase differences.

Issue the following command to exit your ipython session:

exit

Now, from the Bash shell we will give it the correct Linux permissions in order to run your newly-created python script. This is just showing the multiple ways you can use this python script. You are not required to have IPython running on a system, however hopefully we can use IPython's powerful features to our advantage.

Run your python script by issuing the following commands:

chmod 755 ~/ops435/lab1/lab1a.py
python3 ~/ops435/lab1/lab1a.py

Download the check script and check your work. Enter the following commands from the bash shell.

cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls lab1a.py #confirm that you have the lab1a.py script in your directory
ls CheckLab1.py || wget matrix.senecac.on.ca/~acoatley-willis/CheckLab1.py
python ./CheckLab1.py -f -v lab1a

Before moving on to the next step make sure you identify any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may proceed to the next step.

Make notes for observations in your lab log book, and proceed to part 2.

PART 2 - Working with Variables

A variable is used to store data for use later in the program. This data can be a string, integer, decimal, etc. We will only be covering string and integer variable types in this lab. You will learn and use other variable types in future labs.

String Variables

Perform the following steps:

First, let's make a new variable containing a value by issuing the following command:

name = 'Thomas'

Iss the following command to inspect the value of the variable"

name

Print the value to the screen:

print(name)

Now lets try something new, we are going to print out the string and concatenate/combine it with another string. The plus sign can be used to join 2 strings together. However, make sure that your variable is always outside the quotes, or it will not resolve to a value.

print('I have a friend named ' + name)

To gain practice, create a python script (called lab1b.py) with the following content and details:

The script should have a Shebang line

The script should use a single variable called "name"

The value of the "name" variable should be "Isaac"

The script, when executed, should print out "How old are you Isaac?"

Sample run:

%cd ~/ops435/lab1/
%run ./lab1b.py
How old are you Isaac?

Try the checking script as you are working through a script to sometimes get hints.

Download and run the checking script. Enter the following commands from the bash shell:

Before proceeding, make certain that you identify any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may procede to the next step.

Integer Variables

Lets enter into IPython to test out variables.

Perform the following steps:

Enter the following command to access the python prompt:

ipython3

Lets create some new variables to play with.

num1 = 5
num2 = 10

In IPython we can inspect these variables by just typing the name of the variable. But in a python script this will not provide any output. This feature is useful however for debugging.

Issue the following commands:

num1
num2

Now we will make a new variable and try some math:

sum = num1 + num2

This will add the values contained in the variables together, providing a sum. However you will note that there is no output. First lets inspect the new value.

Enter the following command:

sum

Does this value look right? If we wanted to print this out to the screen we could use the following python code.

Enter the following function:

print(sum)

Now lets try printing this sum out with a string:

print('The sum is: ' + sum)

What happened? Did you receive an error? This will may have been the first time you've seen this error, but it won't be the last. What we tried to do is combine a string with a number, and this won't work.

In order to use display this number as a string we will use the "str()" function on it. The "str()" function will return a string of your number and provide it as a argument to "print()". This function will not change the value of your variable, your variable is still a interger.

Issue the following:

print('The sum is: ' + str(sum))

What did you notice this time?

To gain practice, create a python script (called lab1c.py) with the following content and details:

The script should have a Shebang line.

The script should have a variable called name

The script should have a variable called age

The value of the name variable should be Isaac

The variable age should contain a integer

The value of the age variable should be 72

The script, when executed, should print out "Isaac is 72 years old!"

Example run:

%cd ~/ops435/lab1/
%run ./lab1c.py
Isaac is 72 years old!

Try the check script as you are working through a script to sometimes get hints.

Download and run the checking script. Enter the following commands from the bash shell: