Difference between revisions of "OPS435 Python Lab 1"

From CDOT Wiki
Jump to: navigation, search
(Integer Variables)
(LAB OBJECTIVES)
 
(21 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
= LAB OBJECTIVES =
 
= LAB OBJECTIVES =
  
:In advance of this lab, you will 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.
+
:In this lab, you will install a current distribution of Linux in a Virtual Machine on your external SSD. You will do all of your future work within this VM (including quizzes!). 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'''.
+
: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 objects''', and performing '''math operations'''.
 
<br><br>
 
<br><br>
  
Line 12: Line 12:
 
<!-- Try to use tables and simplify the layers of WIKI to make top links less verbose to students -->
 
<!-- Try to use tables and simplify the layers of WIKI to make top links less verbose to students -->
 
   
 
   
:Centos 7 - release 1161 will be used for this course. The purpose for this is to allow you to use a consistent and stable '''RedHat''' based OS, and to lower the amount of new linux distros that you need to learn.
+
:Centos 7 - release 1810 will be used for this course. The purpose for this is to allow you to use a consistent and stable '''RedHat''' based OS, and to lower the amount of new linux distros that you need to learn.
  
 
: Most of you will likely use the school's Windows machines with the Vmware hypervisor. It is also possible to use your own computer, but check with your professor before you do that.
 
: Most of you will likely use the school's Windows machines with the Vmware hypervisor. It is also possible to use your own computer, but check with your professor before you do that.
Line 23: Line 23:
 
::*'''Name:''' centos7
 
::*'''Name:''' centos7
 
::*'''Boot media / Installation:''' CentOS7 Full Install DVD
 
::*'''Boot media / Installation:''' CentOS7 Full Install DVD
:::*Download at Seneca College: CentOS 7 Full Install DVD (image file): http://belmont.senecacollege.ca/pub/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
+
:::*Download at Seneca College: CentOS 7 Full Install DVD (image file): http://belmont.senecacollege.ca/pub/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
:::*Download outside Seneca College: http://mirror.csclub.uwaterloo.ca/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1708.iso
+
:::*Download outside Seneca College: http://mirror.csclub.uwaterloo.ca/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
 
::*'''Disk space:''' 50GB  
 
::*'''Disk space:''' 50GB  
::*'''CPUs:''' 4
+
::*'''CPUs:''' 4 (Number of processors: 1, Number of cores per processor: 4)
 
::*'''Internal Memory:''' 8GB
 
::*'''Internal Memory:''' 8GB
 +
::*'''Environment:''' GNOME Desktop
  
 
<!--==== Environment Setup ====
 
<!--==== Environment Setup ====
Line 48: Line 49:
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
  
:#Regardless of the Linux distribution that is used for this course, these 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.  
+
:#Regardless of the Linux distribution that is used for this course, these lab will be using and referring to the current version of '''CentOS 7''' (Graphical Desktop) for our main Linux machine. When creating your VM, refer to the '''Details / Minimum Requirements''' section above for assistance.  
:#Install Centos7 VM selecting the default partitions. When you have finished the installation of Centos7, you may proceed to the next step.
+
:#Install CentOS 7 VM selecting the default partitions. When you have finished the installation of CentOS 7, you may proceed to the next step.
<blockquote style="margin-left:35px;">{{Admon/important|style="padding-left:25px"|Unit Evaluation Scripts|Each '''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.<br>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 consistent record of their Python scripting progress throughout their labs.}}</blockquote>
+
<blockquote style="margin-left:35px;">{{Admon/important|style="padding-left:25px"|Unit Feedback Scripts|Each '''Part''' (within an 'Investigation) is referred to as a '''Unit'''. Each Unit will require that the student download and run a '''Unit Feedback Script''', which provides the OPS435 student "real-time feedback" of their completed work.<br>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 feedback scripts can also be used to confirm that the student's Python script is on the right track, and provide a consistent record of their Python scripting progress throughout their labs.}}</blockquote>
  
<!--<ol><li value="3" style="margin-left:25px;">Issue the following commands (as a regular user) in order to setup, download and run the first unit evaluation script:<br><source lang="bash">
+
<!--<ol><li value="3" style="margin-left:25px;">Issue the following commands (as a regular user) in order to setup, download and run the first unit feedback script:<br><source lang="bash">
 
mkdir -p ~/ops435/lab1/
 
mkdir -p ~/ops435/lab1/
 
cd ~/ops435/lab1/
 
cd ~/ops435/lab1/
Line 63: Line 64:
 
=== PART 2 - Setting up Your Python Environment For Labs ===
 
=== 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.
+
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. The following should be done on a terminal as the superuser (i.e. root).
  
  
Line 77: Line 78:
 
yum install python34 python34-devel # Install python3.4 and python3.4 development libraries
 
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
 
yum install python python2-devel # Install python2.7 and python2.7 development libraries
 +
</source>
 +
:#We now need to create a link to python3.4:<source lang="bash">
 +
cd /bin
 +
ln -s python3.4 python3
 
</source>
 
</source>
 
:#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:<source lang="bash">
 
:#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:<source lang="bash">
Line 95: Line 100:
 
yum install python-pip # Install python2.7 pip
 
yum install python-pip # Install python2.7 pip
 
yum install python34-pip # Install python3.4 pip
 
yum install python34-pip # Install python3.4 pip
 +
</source></li>
 +
<li style="margin-left:25px;">Upgrade python34-pip with the following command:<source lang="bash">
 +
pip3.4 install --upgrade pip
 
</source></li>
 
</source></li>
 
<li style="margin-left:25px;">Issue the following command to install '''git''':<source lang="bash">
 
<li style="margin-left:25px;">Issue the following command to install '''git''':<source lang="bash">
Line 106: Line 114:
 
pip3.4 install ipython  # Install ipython for python3.4
 
pip3.4 install ipython  # Install ipython for python3.4
 
</source></li>
 
</source></li>
<li style="margin-left:25px;">Issue the following commands in your shell to check your work for this section:<source lang="bash">
+
<li style="margin-left:25px;">Exit from the superuser shell to your regular user shell and issue the following commands to check your work for this section:<source lang="bash">
 +
mkdir -p ~/ops435/lab1/
 
cd ~/ops435/lab1/
 
cd ~/ops435/lab1/
 
pwd #confirm that you are in the right directory
 
pwd #confirm that you are in the right directory
Line 119: Line 128:
  
 
:'''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 users to enter a limited number of Bash shell commands. 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.
 
:'''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 users to enter a limited number of Bash shell commands. 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.
 +
<blockquote style="margin-left:35px;">{{Admon/important|style="padding-left:25px"|ipython and python|[https://plot.ly/python/ipython-vs-python/ What is the difference between '''python''' and '''ipython'''?] Please note that in later labs, you can use either '''python''' or '''ipythone''' as the interactive python shell.}}</blockquote>
 +
  
 
=== PART 1 - Common Ipython Commands and Features ===
 
=== PART 1 - Common Ipython Commands and Features ===
Line 128: Line 139:
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
  
 +
:#Make sure you're using your regular user login and not using the root user for the following section.
 
:#To access the '''ipython''' shell, issue the following command:<source>
 
:#To access the '''ipython''' shell, issue the following command:<source>
 
ipython3
 
ipython3
Line 175: Line 187:
 
= INVESTIGATION 3: WRITING PYTHON SCRIPTS =
 
= INVESTIGATION 3: WRITING PYTHON SCRIPTS =
  
:In 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.
+
:In 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 objects, and using math operators.
 +
 
 +
<blockquote style="margin-left:35px;">{{Admon/important|style="padding-left:25px"|Object and Variable|The terms '''object''' and '''variable''' are used to refer to a data item in computer programming. The term '''variable''' are mostly used in 3rd generation programming/scripting languages (e.g. bash) while the term '''object''' is preferred in object oriented programming/scripting languages like Python. In the context of Python programming/scripting, When you see the term '''variable''' in the lab instructions, it can be replaced by the term '''object'''.}}</blockquote>
 +
 
  
 
=== PART 1 - Common Introductory Python Functions ===
 
=== PART 1 - Common Introductory Python Functions ===
Line 181: Line 196:
 
====Creating the introductory "Hello World" Script====
 
====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.
+
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 python3 shell as well as learn how to run the python script from the bash shell.
  
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
Line 189: Line 204:
 
:#Add the following line into your source code file:<source>
 
:#Add the following line into your source code file:<source>
 
print()
 
print()
</source>And run it from the command-line: <source>python3 ./test.py</source>You will notice that nothing is printed even though we called the "print()" function. This is because we didn't pass any arguments to it, lets try again.<br><br>
+
</source>And run it from the command-line: <source>python3 ./lab1a.py</source>You will notice that nothing is printed even though we called the "print()" function. This is because we didn't pass any arguments to it, lets try again.<br><br>
 
:# Modify your call to print() to inlcude an argument ('hello world'):<br><source>
 
:# Modify your call to print() to inlcude an argument ('hello world'):<br><source>
 
print('hello world')
 
print('hello world')
Line 219: Line 234:
 
</ol>
 
</ol>
  
=== PART 2 - Working with Variables ===
+
=== PART 2 - Working with Python Objects ===
  
:A variable is used to store data for use later in the program. This data can be a string, integer, decimal number, characters, etc. We will only be covering '''string''' and '''integer''' variables in this lab. You will learn and use other variable types in future labs.
+
:In Python, an object is used to store data for use later in the program. This data can be a string, integer, decimal number, characters, etc. We will only be covering '''string''' and '''integer''' variables in this lab. You will learn and use other python object types in future labs.
  
==== String Variables ====
+
==== String Objects ====
  
:String variables contain text to be used in your program. Examples of strings could be user-names, full-names, item descriptions, etc. We will now demonstrate to assign a string to a variable and how to display string variables.
+
:String objects contain text to be used in your program. Examples of strings could be user-names, full-names, item descriptions, etc. We will now demonstrate to assign a string to an object and how to display contents stored in a string object.
  
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
  
 
:#Create a python script (called lab1b.py) and first - start with a few simple things to try:  
 
:#Create a python script (called lab1b.py) and first - start with a few simple things to try:  
:#Let's make a new variable containing a value:<source lang="python">
+
:#Let's make a new object containing a value:<source lang="python">
 
name =  'Thomas'
 
name =  'Thomas'
 
</source>
 
</source>
Line 239: Line 254:
 
print('name')
 
print('name')
 
</source>
 
</source>
:#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.<source lang="python">
+
:#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 object is always outside the quotes, or it will not resolve to a value.<source lang="python">
 
print('I have a friend named ' + name)
 
print('I have a friend named ' + name)
 
</source>
 
</source>
 
:#To gain practice, complete your python script with the following content and details:
 
:#To gain practice, complete your python script with the following content and details:
 
::::* The script should have a '''Shebang line''' like you did for your lab1a.py python script
 
::::* The script should have a '''Shebang line''' like you did for your lab1a.py python script
::::* The script should use a single variable called "name"
+
::::* The script should use a single object called "name"
::::* The value of the "name" variable should be "Isaac"
+
::::* The value of the "name" object should be "Isaac"
 
::::* The script, when executed, should print out "How old are you Isaac?"
 
::::* The script, when executed, should print out "How old are you Isaac?"
 
::::*Sample run: <source>
 
::::*Sample run: <source>
 
  cd ~/ops435/lab1/
 
  cd ~/ops435/lab1/
  run ./lab1b.py
+
  ./lab1b.py
 
  How old are you Isaac?
 
  How old are you Isaac?
 
</source>Try the checking script as you are working through a script to sometimes get hints.<br><br>
 
</source>Try the checking script as you are working through a script to sometimes get hints.<br><br>
Line 258: Line 273:
 
python3 ./CheckLab1.py -f -v lab1b
 
python3 ./CheckLab1.py -f -v lab1b
 
</source></li>
 
</source></li>
<li style="margin-left:25px;"> Before proceeding, make certain that you identify any and all errors in "lab1b.py". When the check script tells you everything is "ok", you may procede to the next step.</li></ol>
+
<li style="margin-left:25px;"> Before proceeding, make certain that you identify any and all errors in "lab1b.py". When the check script tells you everything is "ok", you may proceed to the next step.</li></ol>
  
==== Integer Variables====
+
==== Integer Objects====
  
:Integer variables are used to store a integer numbers that can be used for mathematical operations (discussed in the next section). Integers do NOT contain decimals, and they can be signed (+ or -) or unsigned. Here we will store integers in a variable, perform math operations, and display the results.
+
:In Python, integer objects are used to store an integer numbers that can be used for mathematical operations (discussed in the next section). Integers do NOT contain decimals, and they can be signed (+ or -) or unsigned. Here we will store integers in a object, perform math operations, and display the results.
  
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
  
 
:#Create a python script (called lab1c.py) and first - start with a few simple things to try:  
 
:#Create a python script (called lab1c.py) and first - start with a few simple things to try:  
:#Lets create some new variables to play with.<source lang="python">
+
:#Lets create some new objects to play with.<source lang="python">
 
num1 = 5
 
num1 = 5
 
num2 = 10
 
num2 = 10
 
</source>
 
</source>
:#You can print the values in those variables:<source lang="python">
+
:#You can print the values in those integer objects:<source lang="python">
 
print(num1)
 
print(num1)
 
print(num2)
 
print(num2)
 
</source>
 
</source>
:#Now we will make a new variable and try some math:<source lang="python">
+
:#Now we will make a new integer object and try some math:<source lang="python">
 
sum = num1 + num2
 
sum = num1 + num2
</source>This will add the values contained in the variables together, providing a sum. However you will note that there is no output. Let's inspect the new value:<source lang="python">
+
</source>This will add the values contained in the integer objects together, providing a sum. However you will note that there is no output. Let's inspect the new value:<source lang="python">
 
print(sum)
 
print(sum)
 
</source>Does this value look right? Are you sure?<br>
 
</source>Does this value look right? Are you sure?<br>
 
:#Now lets try printing this sum out with a string:<source lang="python">
 
:#Now lets try printing this sum out with a string:<source lang="python">
 
print('The sum is: ' + sum)
 
print('The sum is: ' + sum)
</source>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.<br><br>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.<br><br>
+
</source>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.<br><br>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 object, your object is still an interger object.<br><br>
 
:# Issue the following:<source lang="python">
 
:# Issue the following:<source lang="python">
 
print('The sum is: ' + str(sum))
 
print('The sum is: ' + str(sum))
Line 288: Line 303:
 
:#To gain practice, complete your python script with the following features:
 
:#To gain practice, complete your python script with the following features:
 
:::* The script should have a Shebang line.
 
:::* The script should have a Shebang line.
:::* The script should have a variable called '''name'''
+
:::* The script should have an object called '''name'''
:::* The script should have a variable called '''age'''
+
:::* The script should have an object called '''age'''
:::* The value of the '''name''' variable should be '''Isaac'''
+
:::* The value of the '''name''' object should be '''Isaac'''
:::* The variable '''age''' should contain a integer
+
:::* The object '''age''' should contain a integer
:::* The value of the '''age''' variable should be '''72'''
+
:::* The value of the '''age''' object should be '''72'''
 
:::* The script, when executed, should print out "Isaac is 72 years old!"
 
:::* The script, when executed, should print out "Isaac is 72 years old!"
 
:::Example run: <source>
 
:::Example run: <source>
Line 305: Line 320:
 
python3 ./CheckLab1.py -f -v lab1c
 
python3 ./CheckLab1.py -f -v lab1c
 
</source></li>
 
</source></li>
<li  style="margin-left:25px;">Before moving on to the next step make sure you identify any and all errors in "lab1c.py". When the check script tells you everything is "ok", you may procede to the next step.</li>
+
<li  style="margin-left:25px;">Before moving on to the next step make sure you identify any and all errors in "lab1c.py". When the check script tells you everything is "ok", you may proceed to the next step.</li>
 
</ol>
 
</ol>
  
Line 314: Line 329:
 
:'''Perform the following steps:'''
 
:'''Perform the following steps:'''
  
:# Issue the following commands to see how they operate in the ipython shell:<source lang="python">
+
:# Try some of the following to see what happens in Python:<source lang="python">
10 + 5    # addition
+
print(10 + 5)   # addition
10 - 5    # subtraction
+
print(10 - 5)   # subtraction
10 * 5    # multiplication
+
print(10 * 5)   # multiplication
10 / 5    # division
+
print(10 / 5)   # division
10 ** 5  # exponents
+
print(10 ** 5)   # exponents
 
</source>NOTE: You must be careful when combining more complex math operators together. Python uses '''PEMDAS''' ('''P'''arentheses, '''E'''xponents, '''M'''ultiplication and '''D'''ivision, '''A'''ddition and '''S'''ubtraction) to resolve math.<br><br>
 
</source>NOTE: You must be careful when combining more complex math operators together. Python uses '''PEMDAS''' ('''P'''arentheses, '''E'''xponents, '''M'''ultiplication and '''D'''ivision, '''A'''ddition and '''S'''ubtraction) to resolve math.<br><br>
 
:# Go over the below examples and see if you understand each situation:<source lang="python">
 
:# Go over the below examples and see if you understand each situation:<source lang="python">
10 + 5 * 2 # multiplication happens before addition
+
print(10 + 5 * 2) # multiplication happens before addition
(10 + 5) * 2 # parentheses happen before multiplication
+
print((10 + 5) * 2) # parentheses happen before multiplication
10 + 5 * 2 - 10 ** 2 # first exponents, then multiplication, then addition and subtraction from left-to-right
+
print(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
+
print(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  
+
print(100 / ((5 + 5) * 2)) # the inner most parentheses are first performing addition, then parentheses again with multiplication, finally the division  
 
</source>
 
</source>
:#To gain practice, create a python script (called lab1d.py) with the following content and details:
+
:#To gain practice, complete your script with the following content and details:
 
::* The script should have a Shebang line.
 
::* The script should have a Shebang line.
::* The variable '''x''' should contain a integer with the value '''10'''
+
::* The object '''x''' should contain a integer with the value '''10'''
::* The variable '''y''' should contain a integer with the value '''2'''
+
::* The object '''y''' should contain a integer with the value '''2'''
::* The variable '''z''' should contain a integer with the value '''5'''
+
::* The object '''z''' should contain a integer with the value '''5'''
::* The script, when executed, should print out "10 + 2 * 5 = 20"
+
::* The script, when executed, should print out "10 + 2 * 5 = 20" (the printout should change if the values in the objects change)
 
:::Example run: <source>
 
:::Example run: <source>
 
cd ~/ops435/lab1/
 
cd ~/ops435/lab1/
run ./lab1d.py
+
./lab1d.py
 
10 + 2 * 5 = 20
 
10 + 2 * 5 = 20
 
</source>Try the checking script as you are working through a script to sometimes get hints.<br><br>
 
</source>Try the checking script as you are working through a script to sometimes get hints.<br><br>
Line 359: Line 374:
  
 
:'''Be able to answer any questions about the lab to show that you understood it!'''
 
:'''Be able to answer any questions about the lab to show that you understood it!'''
<br><br>
+
<br>
 +
:'''For sections A & B:'''
 +
 
 +
::<span style=color:green;font-size:1.5em;">&#x2713;</span> Submit your output and Python scrips via Blackboard instead.
  
 
= LAB REVIEW =
 
= LAB REVIEW =

Latest revision as of 15:32, 9 May 2019

LAB OBJECTIVES

In this lab, you will install a current distribution of Linux in a Virtual Machine on your external SSD. You will do all of your future work within this VM (including quizzes!). 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 objects, and performing math operations.



INVESTIGATION 1: INSTALLING LINUX VM

PART 1 - Installing Your Linux Distribution

Centos 7 - release 1810 will be used for this course. The purpose for this is to allow you to use a consistent and stable RedHat based OS, and to lower the amount of new linux distros that you need to learn.
Most of you will likely use the school's Windows machines with the Vmware hypervisor. It is also possible to use your own computer, but check with your professor before you do that.
Centos 7 comes with python 2.7, for this course we will be primarily using Python3. However, not practicing python 2.7 would be a mistake, since so many programs and operating systems still depend on Python2. It is recommended that students note general improvements/differences in Python2 and Python3.


Centos 7 VM Details / Minimum Requirements:
  • Name: centos7
  • Boot media / Installation: CentOS7 Full Install DVD
  • Disk space: 50GB
  • CPUs: 4 (Number of processors: 1, Number of cores per processor: 4)
  • Internal Memory: 8GB
  • Environment: GNOME Desktop


Perform the following steps:
  1. Regardless of the Linux distribution that is used for this course, these lab will be using and referring to the current version of CentOS 7 (Graphical Desktop) for our main Linux machine. When creating your VM, refer to the Details / Minimum Requirements section above for assistance.
  2. Install CentOS 7 VM selecting the default partitions. When you have finished the installation of CentOS 7, you may proceed to the next step.
Important.png
Unit Feedback Scripts
Each Part (within an 'Investigation) is referred to as a Unit. Each Unit will require that the student download and run a Unit Feedback 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 feedback scripts can also be used to confirm that the student's Python script is on the right track, and provide a consistent record of their Python scripting progress throughout their labs.


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. The following should be done on a terminal as the superuser (i.e. root).


Perform the following steps:
  1. The first step is to update your entire system.
    yum update
  2. Install extra packages for enterprise linux:
    yum install epel-release
  3. Next install applications that we required, 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
  4. We now need to create a link to python3.4:
    cd /bin
    ln -s python3.4 python3
  5. 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
  6. Set your hostname to the Linux Distribution we are using in case you did not set it correctly during the install process:
    hostnamectl set-hostname centos7 # Set your hostname to distribution-name
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.
Idea.png
Selecting an Appropriate Text Editor

Geany (recommended text editor for labs)
A simple graphical text editor for developers. It is available in the CentOS package repositories.
Vim
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.

Sublime
Another powerful and popular text editor designed for programming. Is not free or open source.
  1. 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
  2. Upgrade python34-pip with the following command:
    pip3.4 install --upgrade pip
  3. Issue the following command to install git:
    yum install git # Install git command line tool
Idea.png
What is a Git?
Git refers to a version control system that allows you to track any changes made to files and programs. Our primary use for git in this course will be for backup onto to the internet. Check out bitbucket for a free private code repository.
  1. 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
  2. Exit from the superuser shell to your regular user shell and issue the following commands to check your work for this section:
    mkdir -p ~/ops435/lab1/
    cd ~/ops435/lab1/
    pwd #confirm that you are in the right directory
    ls CheckLab1.py || wget https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
    python3 ./CheckLab1.py -f -v lab0a
    python3 ./CheckLab1.py -f -v lab0b
  3. Before moving on to the next step, make sure you identify and correct any and all errors in "lab0b" output. When the check script tells you everything is "ok", you may proceed to the next step.



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 users to enter a limited number of Bash shell commands. 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.
Important.png
ipython and python
What is the difference between python and ipython? Please note that in later labs, you can use either python or ipythone as the interactive python shell.


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:
  1. Make sure you're using your regular user login and not using the root user for the following section.
  2. 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.
  3. 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.

  4. 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.
  5. Lets setup a directory structures for completing and organizing labs. These should be the locations to store your lab scripts.
     mkdir ~/ops435/lab2
     mkdir ~/ops435/lab3
     mkdir ~/ops435/lab4
     mkdir ~/ops435/lab5
     mkdir ~/ops435/lab6
     mkdir ~/ops435/lab7
     mkdir ~/ops435/lab8
  6. 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.
  1. Issue the following command to exit your ipython session:
     exit
  2. In the future see if ctrl-d works instead of issuing the exit command to quit the ipython shell.
  3. Perform the following steps to evaluate this unit. Run these check scripts regularly as you work through the labs, they may give you hints if you get stuck.
  4. cd ~/ops435/lab1/
    pwd #confirm that you are in the right directory
    ls CheckLab1.py || wget https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
    python3 ./CheckLab1.py -f -v lab0c



INVESTIGATION 3: WRITING PYTHON SCRIPTS

In 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 objects, and using math operators.
Important.png
Object and Variable
The terms object and variable are used to refer to a data item in computer programming. The term variable are mostly used in 3rd generation programming/scripting languages (e.g. bash) while the term object is preferred in object oriented programming/scripting languages like Python. In the context of Python programming/scripting, When you see the term variable in the lab instructions, it can be replaced by the term object.


PART 1 - Common Introductory Python Functions

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 python3 shell as well as learn how to run the python script from the bash shell.

Perform the following steps:


  1. Create a new python file in your ~/ops435/lab1 directory. Call it lab1a.py. The first Python code we will write is going to call 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.

  2. Add the following line into your source code file:
    print()
    And run it from the command-line:
    python3 ./lab1a.py
    You will notice that nothing is printed even though we called the "print()" function. This is because we didn't pass any arguments to it, lets try again.

  3. Modify your call to print() to inlcude an argument ('hello world'):
    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'. In the above example, a string was passed as a argument to the print function. These words are important for understanding and talking about different aspects of code.

  4. Note that there are similarities between the Python print() function and the Bash echo command, but Python is more picky than bash (which is a good thing). Try to run print without the brackets or without the quotes to see what happens.
Idea.png
Reading errors
One of the things that makes a good programmer is debugging skills. The first and most important debugging technique is reading and understanding error messages. Try to understand what the errors are saying even if you think you already know what the problem is and already have some idea about how to fix it.
  1. Write the following code into our python file. Note the she-bang line at the top of the file to run this script in the python3 environment. You will need to add this she-bang line for all python scripts you create for this course.
    #!/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')
  2. Another way of running a pythion program is executing it directly, e.g.:
    ./test.py
    Note that the file will need execute permissions even though you ran it just fine earlier. Why is that?
  3. 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 https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
     python3 ./CheckLab1.py -f -v lab1a
  4. 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.

PART 2 - Working with Python Objects

In Python, an object is used to store data for use later in the program. This data can be a string, integer, decimal number, characters, etc. We will only be covering string and integer variables in this lab. You will learn and use other python object types in future labs.

String Objects

String objects contain text to be used in your program. Examples of strings could be user-names, full-names, item descriptions, etc. We will now demonstrate to assign a string to an object and how to display contents stored in a string object.
Perform the following steps:
  1. Create a python script (called lab1b.py) and first - start with a few simple things to try:
  2. Let's make a new object containing a value:
    name =  'Thomas'
  3. Print the value to the screen:
    print(name)
  4. Think about why this does something different:
    print('name')
  5. 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 object is always outside the quotes, or it will not resolve to a value.
    print('I have a friend named ' + name)
  6. To gain practice, complete your python script with the following content and details:
  • The script should have a Shebang line like you did for your lab1a.py python script
  • The script should use a single object called "name"
  • The value of the "name" object should be "Isaac"
  • The script, when executed, should print out "How old are you Isaac?"
  • Sample run:
     cd ~/ops435/lab1/
     ./lab1b.py
     How old are you Isaac?
    Try the checking script as you are working through a script to sometimes get hints.

  1. 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 https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
    python3 ./CheckLab1.py -f -v lab1b
  2. Before proceeding, make certain that you identify any and all errors in "lab1b.py". When the check script tells you everything is "ok", you may proceed to the next step.

Integer Objects

In Python, integer objects are used to store an integer numbers that can be used for mathematical operations (discussed in the next section). Integers do NOT contain decimals, and they can be signed (+ or -) or unsigned. Here we will store integers in a object, perform math operations, and display the results.
Perform the following steps:
  1. Create a python script (called lab1c.py) and first - start with a few simple things to try:
  2. Lets create some new objects to play with.
    num1 = 5
    num2 = 10
  3. You can print the values in those integer objects:
    print(num1)
    print(num2)
  4. Now we will make a new integer object and try some math:
    sum = num1 + num2
    This will add the values contained in the integer objects together, providing a sum. However you will note that there is no output. Let's inspect the new value:
    print(sum)
    Does this value look right? Are you sure?
  5. 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 object, your object is still an interger object.

  6. Issue the following:
    print('The sum is: ' + str(sum))
    What did you notice this time?
  7. To gain practice, complete your python script with the following features:
  • The script should have a Shebang line.
  • The script should have an object called name
  • The script should have an object called age
  • The value of the name object should be Isaac
  • The object age should contain a integer
  • The value of the age object should be 72
  • The script, when executed, should print out "Isaac is 72 years old!"
Example run:
cd ~/ops435/lab1/
./lab1c.py
Isaac is 72 years old!

Try the check script as you are working through a script to sometimes get hints.
  1. 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 https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
    python3 ./CheckLab1.py -f -v lab1c
  2. Before moving on to the next step make sure you identify any and all errors in "lab1c.py". When the check script tells you everything is "ok", you may proceed to the next step.

PART 5 - MATH OPERATORS

In the previous section, you performed a couple of simple mathematical operations. In this section, you will learn some additional mathematical operations.
Perform the following steps:
  1. Try some of the following to see what happens in Python:
    print(10 + 5)    # addition
    print(10 - 5)    # subtraction
    print(10 * 5)    # multiplication
    print(10 / 5)    # division
    print(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.

  2. Go over the below examples and see if you understand each situation:
    print(10 + 5 * 2)		# multiplication happens before addition
    print((10 + 5) * 2) 		# parentheses happen before multiplication
    print(10 + 5 * 2 - 10 ** 2)	# first exponents, then multiplication, then addition and subtraction from left-to-right
    print(15 / 3 * 4)		# division and multiplication happen from left-to-right
    print(100 / ((5 + 5) * 2))	# the inner most parentheses are first performing addition, then parentheses again with multiplication, finally the division
  3. To gain practice, complete your script with the following content and details:
  • The script should have a Shebang line.
  • The object x should contain a integer with the value 10
  • The object y should contain a integer with the value 2
  • The object z should contain a integer with the value 5
  • The script, when executed, should print out "10 + 2 * 5 = 20" (the printout should change if the values in the objects change)
Example run:
cd ~/ops435/lab1/
./lab1d.py
10 + 2 * 5 = 20
Try the checking script as you are working through a script to sometimes get hints.

  1. 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 https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py
    python3 ./CheckLab1.py -f -v lab1d
    Before moving on to the next step make sure you identify any and all errors in "lab1d.py".

  2. When the check script tells you everything is "ok", you may proceed to the next step.



LAB 1 SIGN-OFF (SHOW INSTRUCTOR)

Students should be prepared with all required commands (system information) displayed in a terminal (or multiple terminals) prior to calling the instructor for signoff.


Have Ready to Show Your Instructor:
Output of: ./CheckLab1.py -f -v
Output of: cat lab1a.py lab1b.py lab1c.py lab1d.py
Be able to answer any questions about the lab to show that you understood it!


For sections A & B:
Submit your output and Python scrips via Blackboard instead.

LAB REVIEW

  1. Write the command to change the hostname of your Linux machine to centos7.
  2. What is the purpose of git? How will git be used in our OPS435 course?
  3. Write the command to create an alias for the Linux command vim which will be called vi in your ipython3 session.
  4. Write the absolute pathname for the ipython3 alias configuration file.
  5. Write Python code that when run, will perform the following tasks:
    1. Contain a she-bang line
    2. Display a greetings message to the user
    3. display an empty line (hint: use the special character \n to print the a new-line character)
    4. Display text, "Your current directory is:" (You are NOT required to display quotation marks)
    5. Display the current working directory pathname (using an appropriate command)
    6. Display another empty line
  6. How do you execute a Python script when you are within the ipython3 shell?
  7. How do you execute a Python script when you are in the Bash Shell (i.e. NOT within the Ipython3 shell)?
  8. Write the pipeline command to check if the CheckLab1.py checking script exists, and download it from the location:
    https://raw.githubusercontent.com/Seneca-CDOT/ops435/master/LabCheckScripts/CheckLab1.py