Create an account


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] IndentationError: Unindent Does Not Match Any Outer Indentation Level

#1
IndentationError: Unindent Does Not Match Any Outer Indentation Level

Summary: The error IndentationError: unindent does not match any outer indentation level arises if you use inconsistent indentation of tabs or whitespaces for indented code blocks such as the if block and the for loop. For example, Python will throw an indentation error, if you use a for loop with four whitespace characters indentation for the first line, and one tab character indentation of the second line of the loop body. To fix the error, use the same number of empty whitespaces for all indented code blocks.


IndentationError: unindent does not match any outer indentation level

You must have come across this stupid bug at some point of time while coding. Isn’t it really frustrating to get an error even if your code is logically correct!

But after you read this article, you will probably never come across this error again. Even if you do, you will be able to rectify it in a flash! So without further delay let us dive into our discussion on IndentationError in Python.

Indentation in Python


Indentation refers to the spaces at the beginning of a line of code.

In other programming languages like Java, indentation simply serves the purpose of readability, i.e., even if you do not follow the proper indentation in such languages, it won’t hamper the execution of your code since they use braces {} to represent a block of code.

In Python indentation is an integral feature that represents a block of code and determines the execution of your code. When you skip proper indentation, Python will throw an IndentationError.

Each line of code within a block should have an equal number of whitespaces before them. This means if a for loop block contains two lines of code then each line should have four whitespaces (ideally) before them. If one line of code has three whitespaces while the other has four, you will again get an IndentationError.

Example 1


Given a list containing marks. Based on given conditions the following program aims to divide each number within the list into a certain grade.

marks = [95,75,65,45,30]
for k in marks: if k>=90: print(k,' = grade A') elif k>=75 and k<90: print(k,' = grade B') elif k>=55 and k<75: print(k,' = grade C') elif k>=45 and k<55: print(k," = grade D") else: print(k," - FAIL!")

Output:

 File "D:/PycharmProjects/PythonErrors/rough.py", line 11 else: ^
IndentationError: unindent does not match any outer indentation level

In the above example, the error occurred in the else statement because it does not follow the correct indentation.

? How to Fix “IndentationError: unindent does not match any outer indentation level


➥ To fix IndentationError: unindent does not match any outer indentation level use the same number of whitespaces for each line of code in a given block.

Let us try and fix the error in our example scenario given above. You simply, have to provide proper spacing before the else statement such that it complies with the entire if-elif-else blocks within the for loop.

Solution:

marks = [95, 75, 65, 45, 30]
for k in marks: if k >= 90: print(k, ' = grade A') elif k >= 75 and k < 90: print(k, ' = grade B') elif k >= 55 and k < 75: print(k, ' = grade C') elif k >= 45 and k < 55: print(k, " = grade D") else: print(k, " - FAIL!")

Output:

95 = grade A
75 = grade B
65 = grade C
45 = grade D
30 - FAIL!

✍ Note:

  • Generally, you should use four whitespaces for indentation and this is preferred over tabs.
  • You can ignore indentation in line continuation, but it’s always recommended to indent your code for better readability.
    • For example: if True :print(“Welcome To Finxter!”)

Let’s have a look at another example to ensure that you have a clear idea about the reason behind the occurrence of such an error.

Example 2


The following program is used to find the factorial of a number entered by the user.

def Factorial(n): # return factorial result = 1 for i in range(1, n): result = result * i print("factorial is ", result) return result num = int(input("Enter a number: "))
print(Factorial(num))

Output:

 File "D:/PycharmProjects/PythonErrors/rough.py", line 6 return result ^
IndentationError: unindent does not match any outer indentation level

Explanation:

The above error occurred because of line 6 which indicates that the return statement has an improper indentation. This happened because we mixed TAB and spaces in our code to indent the block of code within the function.

Solution:

To avoid this error, you can either use TAB or 4 whitespaces (recommended) before each line inside the function. Please note that the block within the for loop should have 8 white-spaces.

def Factorial(n): # return factorial result = 1 for i in range(1, n): result = result * i print("factorial is ", result) return result num = int(input("Enter a number: "))
print(Factorial(num))

Output:

Enter a number: 5
factorial is 24
24

? Avoid or Fix IndentationError In Code Editors


From the above examples it is evident that the major reason behind IndentationError in Python is the improper use of whitespaces and tabs in your program. In most code editors you can fix the number of whitespace characters/ tabs by setting the indentation levels.

Let us have a look at the settings in various code editors that allow us to auto-indent our code or fix the pre-existing errors :

? Sublime Text


  1. Click on View.
  2. Select Indentation.
  3. Select Indentation to tabs.
  4. Uncheck the Indent Using Spaces option in the sub-menu above.

? Notepad ++


Follow the settings given below to view the tabs or whitespaces in Notepad++ .

  1. Click on View
  2. Select Show Symbol
  3. Make sure that Show Whitespace and TAB and Show Indent Guide options are checked.

? Using an IDE


The advantage of using an IDE like PyCharm is that you do not have to worry about indentations in your code manually as this is taken care of by the IDE itself as show in the presentation given below.


Conclusion


I hope you enjoyed reading this article and learned how to fix Indentation Errors in Python. Please subscribe and stay tuned for more interesting articles in the future!

? Read More: Python IndentationError: unexpected indent (How to Fix This Stupid Bug)

The Complete Guide to PyCharm

  • Do you want to master the most popular Python IDE fast?
  • This course will take you from beginner to expert in PyCharm in ~90 minutes.
  • For any software developer, it is crucial to master the IDE well, to write, test and debug high-quality code with little effort.

Join the PyCharm Masterclass now, and master PyCharm by tomorrow!

Where to Go From Here?


Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

The post IndentationError: Unindent Does Not Match Any Outer Indentation Level first appeared on Finxter.



https://www.sickgaming.net/blog/2021/03/...ion-level/
Reply



Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tut] Python IndentationError: unexpected indent (How to Fix This Stupid Bug) xSicKxBot 0 146 10-10-2020, 08:24 PM
Last Post: xSicKxBot
  [Tut] Python One Line Regex Match xSicKxBot 0 127 08-12-2020, 06:43 PM
Last Post: xSicKxBot
  [Tut] PEP 8: Hanging Indentation and Closing Brackets in Python xSicKxBot 0 112 08-04-2020, 09:51 AM
Last Post: xSicKxBot
  [Tut] The Dot Character in a Character Set – What Does It Match? xSicKxBot 0 235 04-22-2020, 12:28 AM
Last Post: xSicKxBot
  [Tut] How to Match an Exact Word in Python Regex? (Answer: Don’t) xSicKxBot 0 274 03-08-2020, 05:43 PM
Last Post: xSicKxBot
  [Tut] Python Regex – How to Match the Start of Line (^) and End of Line ($) xSicKxBot 0 313 02-02-2020, 09:38 AM
Last Post: xSicKxBot
  [Tut] Python Regex Match xSicKxBot 0 347 01-22-2020, 10:35 AM
Last Post: xSicKxBot

Forum Jump:

[-]
Active Threads
[Tut] Your First Dash App – How to Get S...
Last Post: xSicKxBot
Yesterday 06:58 PM
» Replies: 0
» Views: 3
(Indie Deal) Patrician, Sudden Strike, C...
Last Post: xSicKxBot
Yesterday 05:40 PM
» Replies: 0
» Views: 3
picoCAD — A Tiny Modeller For Tiny Model...
Last Post: xSicKxBot
Yesterday 05:40 PM
» Replies: 0
» Views: 4
News - Community Focus – Gumpita
Last Post: xSicKxBot
Yesterday 05:38 PM
» Replies: 0
» Views: 3
Xbox Wire - Black Desert: New Sage Class...
Last Post: xSicKxBot
Yesterday 05:37 PM
» Replies: 0
» Views: 4
News - Twitch outlines plan to take acti...
Last Post: xSicKxBot
Yesterday 05:36 PM
» Replies: 0
» Views: 8
News - Don’t Miss: Devs reflect on the i...
Last Post: xSicKxBot
Yesterday 05:36 PM
» Replies: 0
» Views: 7
News - World War 2 MMO Enlisted Out Now ...
Last Post: xSicKxBot
Yesterday 05:36 PM
» Replies: 0
» Views: 8
AppleInsider - Logitech discontinues Har...
Last Post: xSicKxBot
Yesterday 08:21 AM
» Replies: 0
» Views: 7
News - Legend Of Mana’s Physical Switch ...
Last Post: xSicKxBot
Yesterday 08:20 AM
» Replies: 0
» Views: 6

[-]
Twitter

[-]
Sponsored
Get the Deal of the Week at RefurBees.com

Copyright © SickGaming.net 2012-2020