{"id":25024,"date":"2020-01-30T12:15:09","date_gmt":"2020-01-30T10:15:09","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=25024"},"modified":"2020-06-23T14:56:20","modified_gmt":"2020-06-23T11:56:20","slug":"how-to-write-a-loop-in-python-while-and-for","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/","title":{"rendered":"How to Write a Loop in Python: While and For"},"content":{"rendered":"\n<p>As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for you, there\u2019s some bonus material on recursion as well.<\/p>\n\n\n\n<p>In short, there are two core ways of writing a loop, <code>while<\/code> and <code>for<\/code>. If you\u2019re looking for a tradition loop, opt for the <code>while<\/code> loop. Meanwhile, if you have some sequence or iterable to traverse, opt for the <code>for<\/code> loop. If you find a scenario which gets messy with a loop (e.g. tree traversal), don\u2019t be afraid to fall back on recursion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Problem Description<\/h2>\n\n\n\n<p>When you first get into programming, you often go through a progression of different pieces of syntax. For instance, you might learn about printing and variables. Then, you might expand your knowledge into arithmetic and boolean expressions. If all goes well, you might even learn about conditionals.<\/p>\n\n\n\n<p>As time goes on, you might ask yourself \u201cbut, what if I want to do something repeatedly?\u201d Luckily, most imperative programming languages have a syntax for this called looping. Essentially, we repeat a task until we satisfy some condition.<\/p>\n\n\n\n<p>Of course, if you\u2019ve come from another programming language, you already know all about looping (or at least recursion). The trouble is getting used to the new syntax. Fortunately, we have several different solutions which we\u2019ll take a look at in the next section.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Solutions<\/h2>\n\n\n\n<p>In this section, we\u2019ll take a look at three different ways to write a loop in Python. First, we\u2019ll look at recursion, a functional technique. Then, we\u2019ll dive into the two iterative techniques, <code>while<\/code> and <code>for<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Recursion<\/h3>\n\n\n\n<p>Before we dig into the various loop syntax in Python, I feel like it\u2019s important to mention recursion as a concept. After all, we don\u2019t actually need loops at all. We can get away from writing functions which reference themselves:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_435671\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">def recurse():<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>In this example, we\u2019ve written a function called <code>recurse()<\/code> which calls itself. If we run it, however, we\u2019ll get an error:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_815480\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; recurse()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">Traceback (most recent call last):<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;<\/code><code class=\"java plain\">File <\/code><code class=\"java string\">\"&lt;pyshell#2&gt;\"<\/code><code class=\"java plain\">, line <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, in &lt;module&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse()<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;<\/code><code class=\"java plain\">File <\/code><code class=\"java string\">\"&lt;pyshell#1&gt;\"<\/code><code class=\"java plain\">, line <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, in recurse<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse()<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;<\/code><code class=\"java plain\">File <\/code><code class=\"java string\">\"&lt;pyshell#1&gt;\"<\/code><code class=\"java plain\">, line <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, in recurse<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse()<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;<\/code><code class=\"java plain\">File <\/code><code class=\"java string\">\"&lt;pyshell#1&gt;\"<\/code><code class=\"java plain\">, line <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, in recurse<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse()<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;<\/code><code class=\"java plain\">[Previous line repeated <\/code><code class=\"java value\">991<\/code> <code class=\"java plain\">more times]<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java plain\">RecursionError: maximum recursion depth exceeded<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Of course, this makes sense. After all, if a function calls itself, then it will call itself, then it will call itself, then it will call itself\u2026 alright, my head is spinning.<\/p>\n\n\n\n<p>Luckily, this is pretty easy to fix. We just need to add a condition which only calls the function under certain conditions (e.g. while the input is greater than zero):<\/p>\n\n\n\n<div>\n<div id=\"highlighter_616225\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">def recurse(i):<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">i &gt; <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse(i - <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Now, if we can this function with some number, we won\u2019t crash:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_872535\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; recurse(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>But, what is this actually doing? Well, let\u2019s try printing something:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_53106\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">def recurse(i):<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">i &gt; <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse(i - <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Here, we used an f-string (learn more about those <a href=\"https:\/\/therenegadecoder.com\/code\/how-to-format-a-string-in-python\/\">here<\/a>) to show the input every time this function is called:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_192473\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; recurse(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">5<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">4<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">3<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">2<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">1<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">Input is <\/code><code class=\"java value\">0<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Check that out! We managed to create a function which executes 6 times when we enter a 5. As you can probably imagine, this mechanism can be used to do a lot of interesting things. If you\u2019re interested in learning more about recursion, I\u2019ve written <a href=\"https:\/\/therenegadecoder.com\/code\/yet-another-way-to-learn-recursion\/\">an article all about it<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">While Loop<\/h3>\n\n\n\n<p>With recursion out of the way, let\u2019s talking about loops. In Python, there are two main looping mechanisms: <code>while<\/code> and <code>for<\/code>. Typically, courses cover <code>while<\/code> first because it\u2019s simpler. If you\u2019re familiar with if statements, a <code>while<\/code> loop looks almost exactly the same:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_882505\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">condition:<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">do_thing()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>If the condition is true, the loop body executes just like an if statement. However, after the body executes, the condition is rechecked. If the condition is still true, we drop back into the loop body once again.<\/p>\n\n\n\n<p>Naturally, we can write a loop which behaviors similarly to our recursion example. All we have to do is create a counter variable and count down on each iteration:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_168789\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">i = <\/code><code class=\"java value\">5<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">i &gt;= <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">i -= <\/code><code class=\"java value\">1<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>In this example, we create a variable called <code>i<\/code> and give it a value of 5. Then, we kick off the loop by checking if <code>i<\/code> is greater than or equal to 0. Since it is, we drop into the loop where we print \u201cInput is 5\u201d and decrement <code>i<\/code>. Then, the process repeats. Of course, now <code>i<\/code> is 4 instead of 5. Overall time, <code>i<\/code> will decrement until it is -1, and the loop condition will fail.<\/p>\n\n\n\n<p>In Python, <code>while<\/code> can be used to implement any indefinite loop. In other words, use a <code>while<\/code> loop when you don\u2019t know how many iterations you\u2019ll have ahead of time. For example, <code>while<\/code> loops are perfect for reading from files or prompting for input from a user. In the next section, we\u2019ll take a look at an example of a definite loop.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For Loop<\/h3>\n\n\n\n<p>In many imperative languages like Java, C, and Python, there is more than one way to write a loop. For example, in Java, there are at least four different loop syntaxes that I\u2019m aware of (e.g. <code>while<\/code>, <code>for<\/code>, <code>for each<\/code>, <code>do while<\/code>). Since Python tries to keep things simple, the number of loop syntaxes are limited. As far as I know, there are only two: <code>for<\/code> and <code>while<\/code>.<\/p>\n\n\n\n<p>Now, <code>for<\/code> loops in Python aren\u2019t like <code>for<\/code> loops in other languages. Instead of providing a space to track an index, they operate more like <code>for each<\/code> loops in other languages. In other words, we need something to iterate over like a list. Let\u2019s try recreating our <code>while<\/code> loop from above:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_131479\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">indices = [<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">3<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">]<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java keyword\">for<\/code> <code class=\"java plain\">i in indices:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>To make this loop work, we had to create a list to iterate over. Clearly, this isn\u2019t as convenient as the previous solution. Luckily, Python has a way generating these sort of iterables:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_806020\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">for<\/code> <code class=\"java plain\">i in range(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">):<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Here, we\u2019ve created a loop which will count down from 5 to 0 just like all our other loops. To do that, we used the <code>range()<\/code> function which generates a list-like structure from the inputs provided. In this case, 5 represents the inclusive starting value, the first -1 represents the exclusive ending value, and the second -1 represents the step (i.e. how many values to skip and in what direction).<\/p>\n\n\n\n<p>In general, <code>for<\/code> loops are more useful for iterating over sequences like lists, strings, or generators. In other words, they don\u2019t work exactly like <code>for<\/code> loops in other languages\u2014not without using a special function like <code>range()<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Performance<\/h2>\n\n\n\n<p>At this point, I\u2019m not sure it makes sense to compare the performance of these three constructs, but I already wrote three solutions that do the same thing. In other words, we\u2019re just begging for a comparison. To kick things off, let\u2019s store all three of our solutions in strings:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_199237\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">setup = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">i = <\/code><code class=\"java value\">5<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java plain\">def recurse(i):<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\"># Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">i &gt; <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse(i - <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number8 index7 alt1\">&nbsp;<\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java plain\">recursion = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java plain\">recurse(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number12 index11 alt1\">&nbsp;<\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java plain\">while_loop = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">i &gt;= <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\"># Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">i -= <\/code><code class=\"java value\">1<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number18 index17 alt1\">&nbsp;<\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"java plain\">for_loop = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"java keyword\">for<\/code> <code class=\"java plain\">i in range(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">):<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">pass&nbsp; # Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Then, we can run out test as follows:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_853396\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; <\/code><code class=\"java keyword\">import<\/code> <code class=\"java plain\">timeit<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=recursion))<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java value\">0.7848201999999986<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=while_loop))<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java value\">0.040824499999999375<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=for_loop))<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java value\">0.34835850000000335<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>One thing I found really interesting was the performance of the <code>while<\/code> loop. Then, I realized that my test was slightly inaccurate. Specifically, I had placed the <code>i<\/code> in setup, so it became zero after the first iteration. In other words, the <code>while<\/code> loop became a glorified if statement. When I updated my setup string, here were the results:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_980387\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; setup = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">def recurse(i):<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\"># Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">i &gt; <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse(i - <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">&gt;&gt;&gt; while_loop = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java plain\">i = <\/code><code class=\"java value\">5<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">i &gt;= <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\"># Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">i -= <\/code><code class=\"java value\">1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=while_loop))<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java value\">0.3415355000000204<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Now, that\u2019s almost identical to the <code>for<\/code> loop\u2014which makes sense to me. That said, I was reading <a href=\"https:\/\/stackoverflow.com\/questions\/869229\/why-is-looping-over-range-in-python-faster-than-using-a-while-loop\">some performance discussions on StackOverflow<\/a>, and the <code>for<\/code> loop should be faster overall. Naturally, I had to investigate, so I updated both solutions for large numbers:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_739608\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">&gt;&gt;&gt; for_loop = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java keyword\">for<\/code> <code class=\"java plain\">i in range(<\/code><code class=\"java value\">100<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">):<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">pass&nbsp; # Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=for_loop))<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java value\">1.2956954000001133<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">&gt;&gt;&gt; while_loop = <\/code><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java plain\">i = <\/code><code class=\"java value\">100<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">i &gt;= <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\"># Removed print <\/code><code class=\"java keyword\">for<\/code> <code class=\"java plain\">sanity<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">i -= <\/code><code class=\"java value\">1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java string\">\"\"<\/code><code class=\"java plain\">\"<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java plain\">&gt;&gt;&gt; min(timeit.repeat(setup=setup, stmt=while_loop))<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java value\">4.765163399999892<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Turns out that 100 was all I was willing to wait. Otherwise, this test may have taken all day. That said, even at a number this small, there\u2019s an obvious difference in performance. Feel free to check out that discussion above for a further explanation of why.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Challenge<\/h2>\n\n\n\n<p>Now that we know how to write a loop, let\u2019s try something interesting. Let\u2019s imagine we have a list of lists (aka a matrix):<\/p>\n\n\n\n<div>\n<div id=\"highlighter_21002\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">my_matrix = [<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">3<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">],<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">9<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">],<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">8<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">3<\/code><code class=\"java plain\">]<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>And, we want to total each row (inner list) and determine the average of all rows. Using the example above, we\u2019d get the following row totals:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_147504\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">my_matrix = [<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">3<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">],&nbsp; # <\/code><code class=\"java value\">14<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">9<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">],&nbsp; # <\/code><code class=\"java value\">20<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">[<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">8<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">4<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">3<\/code><code class=\"java plain\">]&nbsp;&nbsp; # <\/code><code class=\"java value\">16<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>Then, we\u2019d average the totals:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_85472\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">(<\/code><code class=\"java value\">14<\/code> <code class=\"java plain\">+ <\/code><code class=\"java value\">20<\/code> <code class=\"java plain\">+ <\/code><code class=\"java value\">16<\/code><code class=\"java plain\">) \/ <\/code><code class=\"java value\">3<\/code>&nbsp; <code class=\"java plain\"># <\/code><code class=\"java value\">16.666666666666668<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<p>When we\u2019re done, we\u2019d report the result to the user.<\/p>\n\n\n\n<p>While this seems like a pretty straightforward task for us, how would we train the computer to do it? In other words, how would we use the various loop syntaxes to do this (hint: you\u2019ll might want to nest two loops)?<\/p>\n\n\n\n<p>If you come up with a solution, drop it down below in the comments. Naturally, I\u2019ll throw my own solution down there to get us started.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Little Recap<\/h2>\n\n\n\n<p>With all that out of the way, let\u2019s revisit our solutions once again:<\/p>\n\n\n\n<div>\n<div id=\"highlighter_546346\" class=\"syntaxhighlighter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\"># Recursion<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">def recurse(i):<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">i &gt; <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">recurse(i - <\/code><code class=\"java value\">1<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java plain\">recurse(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number7 index6 alt2\">&nbsp;<\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java plain\"># While loop<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java plain\">i = <\/code><code class=\"java value\">5<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java keyword\">while<\/code> <code class=\"java plain\">i &gt;= <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">:<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">i -= <\/code><code class=\"java value\">1<\/code><\/div>\n<div class=\"line number13 index12 alt2\">&nbsp;<\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java plain\"># For loop<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java keyword\">for<\/code> <code class=\"java plain\">i in range(<\/code><code class=\"java value\">5<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">, -<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">):<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"java plain\">print(f<\/code><code class=\"java string\">'Input is {i}'<\/code><code class=\"java plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n\n\n\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Web Code Geeks with permission by Jeremy Grifski, partner at our <a href=\"\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener noreferrer\">WCG program<\/a>. See the original article here: <a href=\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/\" target=\"_blank\" rel=\"noopener noreferrer\">How to Write a Loop in Python: While and For<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for you, there\u2019s some bonus material on recursion as well. In short, there are two core ways of writing a loop, while and for. If you\u2019re looking for a tradition &hellip;<\/p>\n","protected":false},"author":14722,"featured_media":1651,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[],"class_list":["post-25024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Write a Loop in Python: While and For - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Write a Loop in Python: While and For - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for\" \/>\n<meta property=\"og:url\" content=\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-30T10:15:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-23T11:56:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Grifski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@RenegadeCoder94\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Grifski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/\"},\"author\":{\"name\":\"Jeremy Grifski\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/7eaa8e89cf23a5de82a048beb4c59aa1\"},\"headline\":\"How to Write a Loop in Python: While and For\",\"datePublished\":\"2020-01-30T10:15:09+00:00\",\"dateModified\":\"2020-06-23T11:56:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/\"},\"wordCount\":1406,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"articleSection\":[\"Python\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/\",\"url\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/\",\"name\":\"How to Write a Loop in Python: While and For - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"datePublished\":\"2020-01-30T10:15:09+00:00\",\"dateModified\":\"2020-06-23T11:56:20+00:00\",\"description\":\"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for\",\"breadcrumb\":{\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Write a Loop in Python: While and For\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/7eaa8e89cf23a5de82a048beb4c59aa1\",\"name\":\"Jeremy Grifski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9d50311a27dff0a54d775b6106b8f804d5d11d0b5182ed537f325046a020c6f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9d50311a27dff0a54d775b6106b8f804d5d11d0b5182ed537f325046a020c6f5?s=96&d=mm&r=g\",\"caption\":\"Jeremy Grifski\"},\"description\":\"Jeremy is the founder of The Renegade Coder, a software curriculum website launched in 2017. In addition, he is a PhD student with an interest in education and data visualization.\",\"sameAs\":[\"https:\/\/therenegadecoder.com\/\",\"https:\/\/www.linkedin.com\/in\/jeremy-grifski-22240552\/\",\"https:\/\/x.com\/RenegadeCoder94\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/jeremy-grifski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Write a Loop in Python: While and For - Web Code Geeks - 2026","description":"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/","og_locale":"en_US","og_type":"article","og_title":"How to Write a Loop in Python: While and For - Web Code Geeks - 2026","og_description":"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for","og_url":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2020-01-30T10:15:09+00:00","article_modified_time":"2020-06-23T11:56:20+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","type":"image\/jpeg"}],"author":"Jeremy Grifski","twitter_card":"summary_large_image","twitter_creator":"@RenegadeCoder94","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Jeremy Grifski","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/"},"author":{"name":"Jeremy Grifski","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/7eaa8e89cf23a5de82a048beb4c59aa1"},"headline":"How to Write a Loop in Python: While and For","datePublished":"2020-01-30T10:15:09+00:00","dateModified":"2020-06-23T11:56:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/"},"wordCount":1406,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","articleSection":["Python"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/python\/how-to-write-a-loop-in-python-while-and-for\/","url":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/","name":"How to Write a Loop in Python: While and For - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage"},"image":{"@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","datePublished":"2020-01-30T10:15:09+00:00","dateModified":"2020-06-23T11:56:20+00:00","description":"As this series grows, I often find myself revisiting the fundamentals. For instance, today we\u2019ll be learning how to write a loop in Python. Luckily for","breadcrumb":{"@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/therenegadecoder.com\/code\/how-to-write-a-loop-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/www.webcodegeeks.com\/category\/python\/"},{"@type":"ListItem","position":3,"name":"How to Write a Loop in Python: While and For"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/7eaa8e89cf23a5de82a048beb4c59aa1","name":"Jeremy Grifski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9d50311a27dff0a54d775b6106b8f804d5d11d0b5182ed537f325046a020c6f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9d50311a27dff0a54d775b6106b8f804d5d11d0b5182ed537f325046a020c6f5?s=96&d=mm&r=g","caption":"Jeremy Grifski"},"description":"Jeremy is the founder of The Renegade Coder, a software curriculum website launched in 2017. In addition, he is a PhD student with an interest in education and data visualization.","sameAs":["https:\/\/therenegadecoder.com\/","https:\/\/www.linkedin.com\/in\/jeremy-grifski-22240552\/","https:\/\/x.com\/RenegadeCoder94"],"url":"https:\/\/www.webcodegeeks.com\/author\/jeremy-grifski\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/25024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/14722"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=25024"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/25024\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/1651"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=25024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=25024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=25024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}