Difference between revisions of "OPS435 Python Lab 1"
(→PART 5 - MATH OPERATORS) |
(→PART 5 - MATH OPERATORS) |
||
Line 395: | Line 395: | ||
ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py | ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py | ||
python ./CheckLab1.py -f -v lab1d | python ./CheckLab1.py -f -v lab1d | ||
− | </source><br>Before moving on to the next step make sure you identify any and all errors in "lab1a.py". </li> | + | </source><br>Before moving on to the next step make sure you identify any and all errors in "lab1a.py".<br> </li> |
<li style="margin-left:25px;">When the check script tells you everything is "ok", you may procede to the next step.<br><br></li> | <li style="margin-left:25px;">When the check script tells you everything is "ok", you may procede to the next step.<br><br></li> | ||
</ol> | </ol> |
Revision as of 11:27, 16 May 2017
Contents
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. This environment setup the python libraries and will also include 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 editing to use, then you will start to create Python scripts to learn basic operations such as:
- x
INVESTIGATION 1: INSTALLING LINUX
PART 1 - Installing Your Linux Distribution
- Since Python runs independently regardless the of the Linux distribution, you have some flexibility of which Linux OS to use. Below is a table displaying the characteristics of the Centos vs Fedora distributions and related Python packages.
Linux Distribution | Characteristics | Python Version |
Centos7 | The stable version of Centos 7 - release 1161 will be chosen(tested) to be supported for this course. This is to keep the ops stream on red hat based systems, 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. Current version (Belmont Server): http://belmont.senecacollege.ca/pub/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso Current Version (External Source): http://mirror.csclub.uwaterloo.ca/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1611.iso | Centos 7 comes with python 2.7, which means that it is not optimal out for the box for teaching this course. However not teaching python 2.7 would be a mistake since so many programs and operating systems still depend on python 2. It would be good to note some changes and encourage new work to be done in python3 while paying attention to specific projects that work only with python 2. |
Fedora | Fedora will always be the slightly harder distribution to support for a course, so it would be great to have an alternative Linux distribution that is stable. The Fedora distribution has a much larger set of packages throughout its repositories, while this is usually not advantageous for a server context, it can work very well with developers. As students write code they may want more customised environments and coding applications, some of these applications may be harder to get on a server distribution. The other benefit to using Fedora is gaining experience using newer software, by practicing with newer software, students will be exposed to changes they will see in much later Centos releases. Current Version (External Source): https://download.fedoraproject.org/pub/fedora/linux/releases/25/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-25-1.3.iso | The most recent version of Fedora is a great pick for python development since they've switched the default python installed to python3, which is primarily what this course is about. However,this may cause issues as we get to Ansible or Openstack so we will have to cover the differences between python2 and python3 including a python2 installation on Fedora. |
Perform the following steps:
- 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, and install the Graphical Desktop for our host machine. When you have finished the installation of Centos7, you may move on to the next steps.
- Issue the following commands in order to setup, download and run the first unit evaluation script:
mkdir -p ~/ops435/lab1/ cd ~/ops435/lab1/ pwd # <-- i.e. confirm that you are in the correct directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab0a
- 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 all of your Investigation 1 (part1) observations in your lab log book, and proceed to part 2.
PART 2 - Setting up Your Python Environment For Labs
In order to learn how to use python on your Linux machine, it is important to setup your Linux environment and learn how to interact with a Python shell.
Perform the following steps:
- The first step is to update your entire system.
yum update
- Install extra packages for enterprise linux
yum install epel-release
- Next install applications we need, first Python version 3 and version 2:
yum install python34 python34-devel # Install python3.4 and python3.4 development libraries yum install python python2-devel # Install python2.7 and python2.7 development libraries
- 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:
yum install screen tmux && ln -s /usr/bin/true /etc/sysconfig/bash-prompt-screen
- You will now set your hostname to the Linux Distribution we are using:
hostnamectl set-hostname centos7 # Set your hostname to distribution-name
- The first step is to update your entire system.
- Installing vim(Vi IMproved) will give us syntax highlighting and allow for advanced customization for terminal editing:
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:
yum install python-pip # Install python2.7 pip yum install python34-pip # Install python3.4 pip
- Issue the following command to install git:
yum install git # Install git command line tool
- 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:
yum install python-ipython # Install ipython for python2.7 pip3.4 install ipython # Install ipython for python3.4
- Issue the following commands in your Ipython shell to check your work for this section:
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab0b
- Before moving on to the next step, make sure you identify and correct any and all errors in "lab1a.py". When the check script tells you everything is "ok", you may proceed to the next step.
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab0c
- 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 COMMAND LINE INTERFACE
IPython is an interactive environment that allows us to run python code line by line as we write it. This will function almost exactly like a bash shell prompt, enter a command and recieve the output back. However the commands that we will be running are lines of python code. Using this method we will start creating scripts out of the code we build in the IPython environment.
PART 1 - Common Ipython Commands and Features
Using Magic Functions
Lets start with trying to run some python code in a interactive shell. This is a advanced python shell, similar to the bash shell that you have been using throughout the linux courses.
Perform the following steps:
- To get into the ipython shell type:Now we are inside the IPython environment. We can run some basic bash commands in here, this is done through by using IPython magic functions.
ipython3
- Lets try a few commands out now:Now hold on. You are not using Python here. These are aliases, that IPython gives you access to. What you are actually using is bash, but not all bash commands are available in the IPython environment.
%ls %pwd %cd ~/ %ls
- Lets find out which ones are available, type the following command into the IPython shell: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, these are only here to assist in your python scripting, we are not here to learn bash commands.
%alias
- Next lets add a new bash command that seems to be missing from this list:
%alias vim vim
- The vim command will give us our much needed syntax highlighting, while we are editing scripts from within the IPython environment. These magic %alias functions do not save in between sessions, this creates a problem since you would have to create them every time you start IPython. This will create a error:You should be seeing an error telling you invalid syntax. This is happening because we need to create a config file to make this alias persist in-between sessions.
exit ipython3 %vim
- Exit your current IPython session:
exit
- Now, create a new file and add the following content to it:
vim ~/.ipython/profile_default/startup/00-alias.ipy
- Place our alias inside:
%alias vim vim
- Save and quit the file. Now lets 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 now and head back to the IPython shell.
- Lets setup a directory structures for completing and organizing labs. These should be the locations to store your lab scripts.
%mkdir ~/ops435 %mkdir ~/ops435/lab1 %mkdir ~/ops435/lab2 %mkdir ~/ops435/lab3 %mkdir ~/ops435/lab4 %mkdir ~/ops435/lab5 %mkdir ~/ops435/lab6 %mkdir ~/ops435/lab7 %mkdir ~/ops435/lab8
- If you are interested in finding more information about magic functions in IPython, try entering the IPython shell and typing the following:
%magic
- To get into the ipython shell type:
- This should show you a OVERWHELMING amount of information, as we move through the course we will slowly use different magic functions from here, but we will never use all of them. To be continued. Magic functions than just running bash commands. 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.
- Perform the following steps to evaluation this unit. 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.
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab1a
- Make notes for observations in your lab log book, and proceed to investigation 3.
INVESTIGATION 3: WRITING A PYTHON SCRIPT
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: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.
ipython3 %cd ~/ops435/lab1 %pwd %ls
- At the prompt, issue the following python function: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.
print()
- Issue the following function: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.
print('hello world')
- Issue the following commands:
Creating the introductory "Hello World" Script
Next, we will make our first script with the above function. Open a new text file called "lab1a.py".
Perform the following steps:
- Edit the following file:
%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:
ipython3 %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. - Exit out of IPython.
- Now, from the Bash shell we will give it the correct linux permissions and run it. 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.
- Issue the following command to exit your ipython session:
exit
- 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.senecacollege.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.
- Edit the following file:
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.
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: Try the checking script as you are working through a script to sometimes get hints.
%cd ~/ops435/lab1/ %run ./lab1b.py How old are you Isaac?
- First, let's make a new variable containing a value by issuing the following command:
- Download and run the checking script. Enter the following commands from the bash shell:
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab1b
- 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.
- Enter the following command to access the python prompt:
- Download and run the checking script. Enter the following commands from the bash shell:
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab1c
- 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 observations in your lab log book, and proceed to part 3.
PART 5 - MATH OPERATORS
Python has a number of math operators you can use in your programs.
Perform the following steps:
- Issue the following commands to see how they operate in the ipython shell:
10 + 5 # addition 10 - 5 # subtraction 10 * 5 # multiplication 10 / 5 # division 10 ** 5 # exponents
NOTE: You must be careful when combining more complex math operators together. Python uses PEMDAS (Parentheses, Exponents, Multiplication and Division, Addition and Subtraction) to resolve math. - Go over the below examples and see if you understand each situation:
10 + 5 * 2 # multiplication happens before addition (10 + 5) * 2 # parentheses happen before multiplication 10 + 5 * 2 - 10 ** 2 # first exponents, then multiplication, then addition and subtraction from left-to-right 15 / 3 * 4 # division and multiplication happen from left-to-right 100 / ((5 + 5) * 2) # the inner most parentheses are first performing addition, then parentheses again with multiplication, finally the division
- To gain practice, create a python script (called lab1d.py) with the following content and details:
- The script should have a Shebang line.
- The variable x should contain a integer with the value 10
- The variable y should contain a integer with the value 2
- The variable z should contain a integer with the value 5
- The script, when executed, should print out "10 + 2 * 5 = 20"
- Example run:
%cd ~/ops435/lab1/ %run ./lab1d.py 10 + 2 * 5 = 20
Try the checking script as you are working through a script to sometimes get hints.
- Issue the following commands to see how they operate in the ipython shell:
- Download and run the checking script. Enter the following commands from the bash shell:
cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls CheckLab1.py || wget matrix.senecacollege.ca/~acoatley-willis/CheckLab1.py python ./CheckLab1.py -f -v lab1d
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.
LAB 1 SIGN-OFF (SHOW INSTRUCTOR)
- Have Ready to Show Your Instructor:
- ✓x
- ✓ x
- ✓ Lab1 logbook notes completed