384
edits
Changes
→Investigation 5 - exploring on how to get Python to do maths
[[Category:rchan]][[Category:OPS435-Online]]
'''Introduction to git, github.com, and Python'''
= Lab Objectives =
:* Using the "git clone" command to clone a repository into a new directory
= Overview =
:*In this lab, you will create an account on github.com and follow the Github "Hello World guide" to create a new public repository on github to and explore the basic workflow of using github to track and manage revisions of software or other contents. The essential operations provided by Github includes:**creating new repository, :**creating a new branch, :**making changes to files, :**creating a pull request, and :**opening and merging a pull request. :*You will then use the git client (git clone) on matrix.senecacollege.ca to access and download the contents of the repository you created on github. Note: if you have your own Linux VM ready, you can also install and use the git client on your VM.:*You will also use the git client on matrix.senecacollege.ca to clone the repository on github.com which hosts the Python scripts for lab 1. :Study *Finally, study, create and execute the simple Python scripts downloaded from the lab 1 repository.
= Reference=
:* Open a pull request, and
:* Merge your pull request
: Please make the following <font color='red'>changes </font> when following the guide::* name the new repository using your <b><u>Seneca user name </u></b> instead of "hello-world".
:* add your full name, and OPS435 section to the README file, do not post any other personal information there.
:* run the following two commands and capture their output to the named files:
<pre>
git log > ~/ops435/lab1/gitlog.txt
</pre>
<pre>
tree -a > ~/ops435/lab1/repo_tree.txt
</pre>
:* Make sure that gitlog.txt and repo_tree.txt are not emptyand are under the ~/ops435/lab1 directory. Review and study the contents of gitlog.txt and repo_tree.txt :*Download the check script and check your work. Enter the following commands from the bash shell.<source lang="bash"> cd ~/ops435/lab1/ pwd #confirm that you are in the right directory ls -l lab1a.py #confirm that you have the directory for you github repo, the files gitlog.txt and repo_tree.txt ls CheckLab1.py || wget 'https://github.com/ops435/lab1-template/blob/master/CheckLab1.py?raw=true' -O CheckLab1.py python3 ./CheckLab1.py -f -v lab0a</source>
= Investigation 2 - Python on Matrix =
* To start an interactive Python version 3 shell, type "python3" at the command prompt.
:* You can access the Python Interpreter on Matrix from a Linux machine or a Windows 10 machine.
:* Login to matrix.senecacollege.ca with your Seneca user name from Windows 10's run box.<br /><br />[[image:window10_ssh.png|ssh to matrix from Windows 10]]
==== Explore Identify and explore Python versions on Matrix ====
:* Once you are on matrix.senecacollege.ca, run the '''python''' command to start a Python version 2 interactive shell at the command prompt. The last line displayed should be '''>>>'''. the '''>>>''' sign is referred to as the Python interactive shell prompt.
:** python
:* Compare the list of keywords and symbols for Python version 2 and version 3. Which keyword(s) is/are remove from version 2 in version 3?
:* Lets setup and reserve the following directories for storing and organizing files for labs and assignments. Execute the following commands at the command prompt:
<pre>
</pre>
:* Download the sample.py script from https://github.com/rayfreeping/ops435-lab1 repository to ~/ops435/lab1 directory
:* Study and Explore the sample.py python script and identify the following sections:
:** <source>python3 sample.py 2>/dev/null</source>
:** <source>python3 sample.py test 2>/dev/null </source>
:*Download the check script and check your work. Enter the following commands from the bash shell.<source lang="bash">
cd ~/ops435/lab1/
pwd #confirm that you are in the right directory
ls -l ~/ops435/ #confirm that you have create the directory structure under ~/ops435
ls CheckLab1.py || wget 'https://github.com/ops435/lab1-template/blob/master/CheckLab1.py?raw=true' -O CheckLab1.py
python3 ./CheckLab1.py -f -v lab0b
</source>
== Task 2 Investigation 3 - exploring and using Python's built-in functions ===== Part I - Interactive (leaning) mode: using the Python Interactive Shell ===
:* In this mode, you can instruct the Python Interpreter to execute python statement or python expression one at a time, call a function, or display the representation of a python data object.
:* To start the Python version 3 Interactive shell, type the command <source>[raymond.chan@mtrx-node05pd lab1]$ python3</source> at the Linux command prompt.
</source>
:* Please note that the prompt changed from '''>>>''' to '''help>'''. Try the suggestion and feel free to explore the interactive help utility. Simple press the '''Enter''' key to get out of the interactive help utility.
:* At the '''>>>''' prompt, type '''dir()''' to call the built-in function named '''dir''' without passing any function argument to display it. The '''dir()''' function will return a list of data object names known to the Python interpreter at the that moment. You should get a list of items similar to the following: <source>
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x']
>>>
</source>
:* We are interested in the '''object''' named '''__builtins__'''at this moment. We can ask the Python interpreter to tell use us more about the '''__builtins__''' object by passing its name '''__builtins__builtins__''' as a the function argument to the '''dir()''' function: <source>>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError',
...
'type', 'vars', 'zip']
</source>
:* The above output shows a list of the so-called '''built-in run-time error codes''' and '''bulit-in functionsfunction names'''. We are going to learn how to use them effective effectively in order to save our coding effort when writing Python programs/scripts.:* Let start starts with the following built-in functions:
:** print()
:** help()
:** type()
:* We can learn more about the above built-in functions within the Python interactive shell. Study the output of the following command at the '''>>>''' prompt and keep a record of them for future reference:<source>
>>> help(help)
</source>
:'''Perform the following steps:''' :#Create a python script (called lab1b.py) and first - start with a few simple things to try: :#Let's make a new object containing a value:<source lang="python">name = 'Thomas'</source>:#Print the value to the screen:<source lang="python">print(name)</source>:#Think about why this does something different:<source lang="python">print('name')</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 two strings together. However, make sure that the name of 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)</source>:#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: <source> cd ~/ops435/lab1/ ./lab1b.py How old are you Isaac?</source>Try the checking script as you are working through a script to sometimes get hints.<br><br><ol><li value="7" style= Task 3 "margin-left:25px;">Download and run the checking script. Enter the following commands from the '''bash shell''':<source lang="bash">cd ~/ops435/lab1/pwd #confirm that you are in the right directoryls CheckLab1.py || wget https://ict.senecacollege.ca/~raymond.chan/ops435/labs/CheckScripts/CheckLab1.pypython3 ./CheckLab1.py -f -v lab1b</source></li><li style="margin- exploring 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 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. :'s built''Perform the following steps:''' :#Create a python script (called lab1c.py) and first -start with a few simple things to try: :#Lets create two new objects, num1 and num2, to play with.<source lang="python">num1 = 5num2 = 10</source>:#You can print the values in those integer objects:<source lang="python">print(num1)print(num2)</source>:#Now we will make a new object called "sum", and try some math:<source lang="python">sum = num1 + num2</source>This will add the values contained in the integer objects together and assign the result to the object named "sum". However you will note that there is no data objects show up on the screen. Let's inspect the contents of the new object named "sum":<source lang="python">print(sum)</source>Does this value look right? Are you sure?<br>:#Now lets try printing this sum out with a string:<source lang="python">print('The sum is: ' + sum)</source>What happened? Did you receive an error? This 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 concatenate a sting and an integer object, we will have to use another builtin function called "str()" to convert an integer object to a string first. 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 integer object.<br><br>:# Issue the following:<source lang="python">print('The sum is: ' + str(sum))</source>What did you notice this time?<br />:#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''' objectshould be '''72''':::* string objectThe script, when executed, should print out "Isaac is 72 years old!":::Example run: <source>cd ~/ops435/lab1/./lab1c.pyIsaac is 72 years old!</source><br>Try the check script as you are working through a script to sometimes get hints.<br><ol><li value=10" style="margin-left:25px;">Download and run the checking script. Enter the following commands from the bash shell:<source lang="bash">cd ~/ops435/lab1/pwd #confirm that you are in the right directoryls CheckLab1.py || wget 'https://github.com/ops435/lab1-template/blob/master/CheckLab1.py?raw=true' -O CheckLab1.pypython3 ./CheckLab1.py -f -v lab1c</source></li><li style= Task 4 "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> = Investigation 5 - exploring on how to get Python to do maths =: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:''' :# Try some of the following to see what happens in Python:<source lang="python">print(10 + 5) # additionprint(10 - 5) # subtractionprint(10 * 5) # multiplicationprint(10 / 5) # divisionprint(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>:# Go over the below examples and see if you understand each situation:<source lang="python">print(10 + 5 * 2) # multiplication happens before additionprint((10 + 5) * 2) # parentheses happen before multiplicationprint(10 + 5 * 2 - 10 ** 2) # first exponents, then multiplication, then addition and subtraction from left-to-rightprint(15 / 3 * 4) # division and multiplication happen from left-to-rightprint(100 / ((5 + 5) * 2)) # the inner most parentheses are first performing addition, then parentheses again with multiplication, finally the division </source>:#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: <source>cd ~/ops435/lab1/./lab1d.py10 + 2 * Math operators5 = 20</source>Try the checking script as you are working through a script to sometimes get hints.<br><br><ol><li style="margin-left:25px;" value="4">Download and run the checking script. Enter the following commands from the bash shell:<source lang="bash">cd ~/ops435/lab1/pwd #confirm that you are in the right directoryls CheckLab1.py || wget 'https://github.com/ops435/lab1-template/blob/master/CheckLab1.py?raw=true' -O CheckLab1.pypython3 ./CheckLab1.py -f -v lab1d</source>Before moving on to the next step make sure you identify any and all errors in "lab1d.py".<br><br></li><li style="margin-left:25px;">When the check script tells you everything is "ok", you may proceed to the next step.<br><br></li></ol>
=LAB 1 SIGN-OFF Upload the following files individually to Blackboard=
:* gitlog'''Run the CheckLab1.py script and capture the result'''<source>python3 ./CheckLab1.py -f -v &> lab1_[seneca_id].txt</source> : contains Submit the output of the command "git log" from Task 3following files individually to Blackboard::* repo_tree.txt: contains the output of the command <span style="tree color:green;font-asize:1.5em;" from Task 3>✓</span> <code>lab1_[seneca_id].txt</code>:* lab1_check.txt: contains the output of the command <span style="python3 color:green;font-size:1.5em;">✓</checkLab1span> <code>gitlog.txt, repo_tree.txt, lab1a.py, lab1b.py lab1c.py -f -v", lab1d.py</code>
= Lab Review =
:# What is the name of the definitive branch in a git repository?
:# What is a "pull request" related to a branch in a git repository?
:# Write Python code that when run, will perform the following tasks:<ol type="a"><li>Contain a she-bang line</li><li>Display a greetings message to the user</li><li>display an empty line ('''hint:''' use the special character '''\n''' to print the a new-line character)</li><li>Display text, '''"Your current directory is:"''' (You are NOT required to display quotation marks)</li><li>Display the current working directory pathname (using an appropriate command)</li><li>Display another empty line</li></ol>
:# How do you execute a Python script when you are within the interactive <u>python3</u> shell? (Hint: make use of a function provided by the os python module.)
:# How do you execute a Python script when you are in the <u>Bash</u> Shell (i.e. NOT within the python3 shell)?
:# Write the pipeline command to check if the CheckLab1.py checking script exists, and download it from the location:<br>https://ict.senecacollege.ca/~raymond.chan/ops435/labs/LabCheckScripts/CheckLab1.py