Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Created on Cognitive Class Labs
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/NotebooksPython101\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://cognitiveclass.ai/\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/CCLog.png\" width=\"200\" align=\"center\">\n",
"</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Loops in Python</h1>"
]
},
{
"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>"
]
},
{
"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",
" <p>\n",
" Estimated time needed: <strong>20 min</strong>\n",
" </p>\n",
"</div>\n",
"\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"loop\">Loops</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"range\">Range</h3>"
]
},
{
"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 a sequence that contains three elements ordered from 0 to 2 we simply use the following command:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"range(0, 3)\n"
]
}
],
"source": [
"# Use the range\n",
"\n",
"print(range(3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/LoopsRange.png\" width=\"300\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"for\">What is <code>for</code> loop?</h3>"
]
},
{
"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>:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This can be done as follows:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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:"
]
},
{
"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\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this example we can print out a sequence of numbers from 0 to 7:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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: "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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:"
]
},
{
"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\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the elements in a list:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Before square 0 is red\n",
"After square 0 is weight\n",
"Before square 1 is yellow\n",
"After square 1 is weight\n",
"Before square 2 is green\n",
"After square 2 is weight\n",
"Before square 3 is purple\n",
"After square 3 is weight\n",
"Before square 4 is blue\n",
"After square 4 is weight\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] = 'weight'\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: "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"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:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1982\n",
"1980\n",
"1973\n",
"It took 3 repetitions to get out of loop.\n"
]
}
],
"source": [
"# While Loop Example\n",
"\n",
"dates = [1982, 1980, 1973, 2000]\n",
"\n",
"i = 0\n",
"year = 0\n",
"\n",
"while(year != 1973):\n",
" year = dates[i]\n",
" i = i + 1\n",
" print(year)\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:"
]
},
{
"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\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"quiz\">Quiz on Loops</h2>"
]
},
{
"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."
]
},
{
"cell_type": "code",
"execution_count": 2,
"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"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"for i in range(-5,5):\n",
" print(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"for i in range(-5, 6):\n",
" print(i)\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."
]
},
{
"cell_type": "code",
"execution_count": 10,
"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)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"Genres = ['rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']\n",
"for Genre in Genres:\n",
" print(Genre)\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Write a for loop that prints out the following list: <code>squares=['red', 'yellow', 'green', 'purple', 'blue']</code>"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"red\n",
"yellow\n",
"green\n",
"purple\n",
"blue\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"squares=['red', 'yellow', 'green', 'purple', 'blue']\n",
"for i in squares:\n",
" print(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"squares=['red', 'yellow', 'green', 'purple', 'blue']\n",
"for square in squares:\n",
" print(square)\n",
" -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"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>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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",
"\n",
"i = 0\n",
"while (PlaylistRatings[i] >= 6):\n",
" print(PlaylistRatings[i])\n",
" i = i + 1\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]\n",
"i = 1\n",
"Rating = PlayListRatings[0]\n",
"while(Rating >= 6):\n",
" print(Rating)\n",
" Rating = PlayListRatings[i]\n",
" i = i + 1\n",
" -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"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>:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['orange']\n",
"['orange', 'orange']\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"\n",
"squares = ['orange', 'orange', 'purple', 'blue ', 'orange']\n",
"new_squares = []\n",
"\n",
"i = 0\n",
"while squares[i] == 'orange':\n",
" new_squares.append(squares[i])\n",
" i = i + 1\n",
" print(new_squares)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"squares = ['orange', 'orange', 'purple', 'blue ', 'orange']\n",
"new_squares = []\n",
"i = 0\n",
"while(squares[i] == 'orange'):\n",
" new_squares.append(squares[i])\n",
" i = i + 1\n",
"print (new_squares)\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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<h2>Get IBM Watson Studio free of charge!</h2>\n",
" <p><a href=\"https://cocl.us/NotebooksPython101bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3> \n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Other contributors: <a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a>, <a href=\"https://www.linkedin.com/in/reevejamesd/\">James Reeve</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.