Created
February 28, 2021 23:01
-
-
Save Anugithub2019/3c35e1be72fd65f3f1b44121a81cd4fe to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<center>\n", | |
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n", | |
"</center>\n", | |
"\n", | |
"# Loops in Python\n", | |
"\n", | |
"Estimated time needed: **20** minutes\n", | |
"\n", | |
"## Objectives\n", | |
"\n", | |
"After completing this lab you will be able to:\n", | |
"\n", | |
"- work with the loop statements in Python, including for-loop and while-loop.\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h1>Loops in Python</h1>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<p><strong>Welcome!</strong> This notebook will teach you about the loops in the Python Programming Language. By the end of this lab, you'll know how to use the loop statements in Python, including for loop, and while loop.</p>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2>Table of Contents</h2>\n", | |
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n", | |
" <ul>\n", | |
" <li>\n", | |
" <a href=\"#loop\">Loops</a>\n", | |
" <ul>\n", | |
" <li><a href=\"range\">Range</a></li>\n", | |
" <li><a href=\"for\">What is <code>for</code> loop?</a></li>\n", | |
" <li><a href=\"while\">What is <code>while</code> loop?</a></li>\n", | |
" </ul>\n", | |
" </li>\n", | |
" <li>\n", | |
" <a href=\"#quiz\">Quiz on Loops</a>\n", | |
" </li>\n", | |
" </ul>\n", | |
"\n", | |
"</div>\n", | |
"\n", | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"loop\">Loops</h2>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3 id=\"range\">Range</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Sometimes, you might want to repeat a given operation many times. Repeated executions like this are performed by <b>loops</b>. We will look at two types of loops, <code>for</code> loops and <code>while</code> loops.\n", | |
"\n", | |
"Before we discuss loops lets discuss the <code>range</code> object. It is helpful to think of the range object as an ordered list. For now, let's look at the simplest case. If we would like to generate an object that contains elements ordered from 0 to 2 we simply use the following command:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"range(0, 3)" | |
] | |
}, | |
"execution_count": 1, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Use the range\n", | |
"\n", | |
"range(3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork/labs/Module%203/images/range.PNG\" width=\"300\" />\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**_NOTE: While in Python 2.x it returned a list as seen in video lessons, in 3.x it returns a range object._**\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3 id=\"for\">What is <code>for</code> loop?</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The <code>for</code> loop enables you to execute a code block multiple times. For example, you would use this if you would like to print out every element in a list. \n", | |
"Let's try to use a <code>for</code> loop to print all the years presented in the list <code>dates</code>:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This can be done as follows:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1982\n", | |
"1980\n", | |
"1973\n" | |
] | |
} | |
], | |
"source": [ | |
"# For loop example\n", | |
"\n", | |
"dates = [1982,1980,1973]\n", | |
"N = len(dates)\n", | |
"\n", | |
"for i in range(N):\n", | |
" print(dates[i]) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The code in the indent is executed <code>N</code> times, each time the value of <code>i</code> is increased by 1 for every execution. The statement executed is to <code>print</code> out the value in the list at index <code>i</code> as shown here:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/LoopsForRange.gif\" width=\"800\" />\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this example we can print out a sequence of numbers from 0 to 7:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0\n", | |
"1\n", | |
"2\n", | |
"3\n", | |
"4\n", | |
"5\n", | |
"6\n", | |
"7\n" | |
] | |
} | |
], | |
"source": [ | |
"# Example of for loop\n", | |
"\n", | |
"for i in range(0, 8):\n", | |
" print(i)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In Python we can directly access the elements in the list as follows: \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1982\n", | |
"1980\n", | |
"1973\n" | |
] | |
} | |
], | |
"source": [ | |
"# Exmaple of for loop, loop through list\n", | |
"\n", | |
"for year in dates: \n", | |
" print(year) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"For each iteration, the value of the variable <code>years</code> behaves like the value of <code>dates[i]</code> in the first example:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/LoopsForList.gif\" width=\"800\">\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can change the elements in a list:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Before square 0 is red\n", | |
"After square 0 is white\n", | |
"Before square 1 is yellow\n", | |
"After square 1 is white\n", | |
"Before square 2 is green\n", | |
"After square 2 is white\n", | |
"Before square 3 is purple\n", | |
"After square 3 is white\n", | |
"Before square 4 is blue\n", | |
"After square 4 is white\n" | |
] | |
} | |
], | |
"source": [ | |
"# Use for loop to change the elements in list\n", | |
"\n", | |
"squares = ['red', 'yellow', 'green', 'purple', 'blue']\n", | |
"\n", | |
"for i in range(0, 5):\n", | |
" print(\"Before square \", i, 'is', squares[i])\n", | |
" squares[i] = 'white'\n", | |
" print(\"After square \", i, 'is', squares[i])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" We can access the index and the elements of a list as follows: \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0 red\n", | |
"1 yellow\n", | |
"2 green\n", | |
"3 purple\n", | |
"4 blue\n" | |
] | |
} | |
], | |
"source": [ | |
"# Loop through the list and iterate on both index and element value\n", | |
"\n", | |
"squares=['red', 'yellow', 'green', 'purple', 'blue']\n", | |
"\n", | |
"for i, square in enumerate(squares):\n", | |
" print(i, square)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h3 id=\"while\">What is <code>while</code> loop?</h3>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As you can see, the <code>for</code> loop is used for a controlled flow of repetition. However, what if we don't know when we want to stop the loop? What if we want to keep executing a code block until a certain condition is met? The <code>while</code> loop exists as a tool for repeated execution based on a condition. The code block will keep being executed until the given logical condition returns a **False** boolean value.\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let’s say we would like to iterate through list <code>dates</code> and stop at the year 1973, then print out the number of iterations. This can be done with the following block of code:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1982\n", | |
"1980\n", | |
"It took 2 repetitions to get out of loop.\n" | |
] | |
} | |
], | |
"source": [ | |
"# While Loop Example\n", | |
"\n", | |
"dates = [1982, 1980, 1973, 2000]\n", | |
"\n", | |
"i = 0\n", | |
"year = dates[0]\n", | |
"\n", | |
"while(year != 1973): \n", | |
" print(year)\n", | |
" i = i + 1\n", | |
" year = dates[i]\n", | |
" \n", | |
"\n", | |
"print(\"It took \", i ,\"repetitions to get out of loop.\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"A while loop iterates merely until the condition in the argument is not met, as shown in the following figure:\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/LoopsWhile.gif\" width=\"650\" />\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h2 id=\"quiz\">Quiz on Loops</h2>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Write a <code>for</code> loop the prints out all the element between <b>-5</b> and <b>5</b> using the range function.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"-5\n", | |
"-4\n", | |
"-3\n", | |
"-2\n", | |
"-1\n", | |
"0\n", | |
"1\n", | |
"2\n", | |
"3\n", | |
"4\n", | |
"5\n" | |
] | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"for i in range(-5,6):\n", | |
" print(i)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<details><summary>Click here for the solution</summary>\n", | |
"\n", | |
"```python\n", | |
"for i in range(-5, 6):\n", | |
" print(i)\n", | |
" \n", | |
"```\n", | |
"\n", | |
"</details>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Print the elements of the following list:\n", | |
"<code>Genres=[ 'rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']</code>\n", | |
"Make sure you follow Python conventions.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"rock\n", | |
"R&B\n", | |
"Soundtrack\n", | |
"R&B\n", | |
"soul\n", | |
"pop\n" | |
] | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"Genres=[ 'rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']\n", | |
"for i in Genres:\n", | |
" print(i)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<details><summary>Click here for the solution</summary>\n", | |
"\n", | |
"```python\n", | |
"Genres = ['rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']\n", | |
"for Genre in Genres:\n", | |
" print(Genre)\n", | |
" \n", | |
"```\n", | |
"\n", | |
"</details>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Write a for loop that prints out the following list: <code>squares=['red', 'yellow', 'green', 'purple', 'blue']</code>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"squares=['red', 'yellow', 'green', 'purple', 'blue']\n", | |
"for sq in squares:\n", | |
" print(sq)\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<details><summary>Click here for the solution</summary>\n", | |
"\n", | |
"```python\n", | |
"squares=['red', 'yellow', 'green', 'purple', 'blue']\n", | |
"for square in squares:\n", | |
" print(square)\n", | |
" \n", | |
"```\n", | |
"\n", | |
"</details>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Write a while loop to display the values of the Rating of an album playlist stored in the list <code>PlayListRatings</code>. If the score is less than 6, exit the loop. The list <code>PlayListRatings</code> is given by: <code>PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]</code>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10\n", | |
"9.5\n", | |
"10\n", | |
"8\n", | |
"7.5\n" | |
] | |
} | |
], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]\n", | |
"i = 1 \n", | |
"Rating = PlayListRatings[0]\n", | |
"while(i < len(PlayListRatings) and Rating >=6):\n", | |
" print(Rating)\n", | |
" Rating = PlayListRatings[i]\n", | |
" i=i+1\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<details><summary>Click here for the solution</summary>\n", | |
"\n", | |
"```python\n", | |
"PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]\n", | |
"i = 1\n", | |
"Rating = PlayListRatings[0]\n", | |
"while(i < len(PlayListRatings) and Rating >= 6):\n", | |
" print(Rating)\n", | |
" Rating = PlayListRatings[i]\n", | |
" i = i + 1\n", | |
" \n", | |
"```\n", | |
"\n", | |
"</details>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Write a while loop to copy the strings <code>'orange'</code> of the list <code>squares</code> to the list <code>new_squares</code>. Stop and exit the loop if the value on the list is not <code>'orange'</code>:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Write your code below and press Shift+Enter to execute\n", | |
"\n", | |
"squares = ['orange', 'orange', 'purple', 'blue ', 'orange']\n", | |
"new_squares = []\n", | |
"i=0\n", | |
"#nsq = squares[0]\n", | |
"#while(i< len(squares) and nsq == 'orange'):\n", | |
"# new_squares.append(nsq)\n", | |
" i= i+1\n", | |
" # nsq = square[i]\n", | |
"\n", | |
"\n", | |
"while(i < len(squares) and squares[i] == 'orange'):\n", | |
" new_squares.append(squares[i])\n", | |
" i = i + 1\n", | |
"\n", | |
"\n", | |
"\n", | |
"print(new_squares)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<details><summary>Click here for the solution</summary>\n", | |
"\n", | |
"```python\n", | |
"squares = ['orange', 'orange', 'purple', 'blue ', 'orange']\n", | |
"new_squares = []\n", | |
"i = 0\n", | |
"while(i < len(squares) and squares[i] == 'orange'):\n", | |
" new_squares.append(squares[i])\n", | |
" i = i + 1\n", | |
"print (new_squares)\n", | |
" \n", | |
"```\n", | |
"\n", | |
"</details>\n", | |
" \n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<hr>\n", | |
"<h2>The last exercise!</h2>\n", | |
"<p>Congratulations, you have completed your first lesson and hands-on lab in Python. However, there is one more thing you need to do. The Data Science community encourages sharing work. The best way to share and showcase your work is to share it on GitHub. By sharing your notebook on GitHub you are not only building your reputation with fellow data scientists, but you can also show it off when applying for a job. Even though this was your first piece of work, it is never too early to start building good habits. So, please read and follow <a href=\"https://cognitiveclass.ai/blog/data-scientists-stand-out-by-sharing-your-notebooks/\" target=\"_blank\">this article</a> to learn how to share your work.\n", | |
"<hr>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Author\n", | |
"\n", | |
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n", | |
"\n", | |
"## Other contributors\n", | |
"\n", | |
"<a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a>\n", | |
"\n", | |
"## Change Log\n", | |
"\n", | |
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n", | |
"| ----------------- | ------- | ---------- | ---------------------------------- |\n", | |
"| 2020-08-26 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n", | |
"| | | | |\n", | |
"| | | | |\n", | |
"\n", | |
"<hr/>\n", | |
"\n", | |
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python", | |
"language": "python", | |
"name": "conda-env-python-py" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment