Python Forum

Full Version: Python Shell 3.9.0 - Issue with indentation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
https://www.ppaste.org/ZlGieSKbc

The above code works fine on any other interpreter(12,16,done) but when I use the python shell 3.9.0 I get SyntaxError: unindent does not match any outer indentation level.
Tried different approaches but nothing worked.
Using any other interpreter is fine but I want to know why it doesn't work on Python Shell 3.9.0 and how to fix it.
Any ideas ?
Please, post your code here - copy/paste as text in python tags. What you show on the picture has problems with the indentation as well as the 2 print functions on the last line. This code cannot run on any python.

If this cross-posted as implied by the image, you should add link to the other medium too.
Look at this image.
The only way you can get unindent does not match any outer indentation level with that code if fix last line.
Are if run code in IDLE Python shell >>>,and not as New File as image.
Correct code,always 4-space indentation in Python.
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1:
        break

print(i)
print("done")
Output:
17 done
The code in that paste doesn't generate an indentation error, but a syntax error from having the two prints on the same line.

I don't see anything here that should be different between any version of python 3, either 3.9 or earlier.
https://www.ppaste.org/lPOwHRon3

My apologies for any confusion. The correct code is the above and it does not run in Python Shell.
Stop posting links. Paste your code directly into your post and surround it with python tags. Like this:
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
print("done")
You should not be typing programs in the shell. Type programs in a file and run the file. If you have to type code in the shell you need to add empty lines at the end of a compound statement so Python knows when it reached the end of a statement
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)

print("done")
Also note that you cannot cut and paste multiple statements in the shell. The shell is for one statement at a time. This is one statement:
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
And this is another.
print("done")
You need to press the enter key to execute the first statement before you start entering the second.
Not it doesn't.

for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
print("done") # For this Line I get in Python Shell 3.9.0 SyntaxError: unindent does not match any outer indentation level
The indentation of line 3 is just 3 spaces. It should be 4.
Maybe you have some unprintable characters in your file. What OS are you on? If you're on linux, show the output of od -c <filename>.
I am using Windows 10.

Tried in the pas all the above mentioned methods.

Works giving the result 12,16.
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
Doesn't work giving SyntaxError: unindent does not match any outer indentation level
for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
 
print("done") 
Also SyntaxError: unindent does not match any outer indentation level

for i in [12, 16, 17, 24, 29]:
    if i % 2 == 1: 
       break
    print(i)
 print("done")
In conclusion am I to assume that the above code will never work on python Shell 3.9.0 ?
If yes why ?
Pages: 1 2