Python Forum
Code runs as pure python but not jupyter notebook
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Code runs as pure python but not jupyter notebook
#1
Hello to the forum. As you can tell from the title, I am just learning python, and its use as a jupyter notbook.

I have this cell with a few lines of code that seems to run fine, under pycharm, when I use it in a file type of pure python. But when I use that same code in a file type ipynb, I get an "invalid syntax" error.

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

print quicksort([3, 6, 8, 10, 1, 2, 1])


Here is the error:

print quicksort([3, 6, 8, 10, 1, 2, 1])
syntax error



Thank You
Tom
Reply
#2
This code runs fine on Jupyter. However, you will get 'invalid syntax' if you try print quicksort([3, 6, 8, 10, 1, 2, 1]). You have to print(quicksort([3, 6, 8, 10, 1, 2, 1])) because you probably have Python 3 kernel (have a look at Installing the IPython kernel)

You don't need 'print' to have cell output. Just enter 'quicksort([3, 6, 8, 10, 1, 2, 1])' in cell and hit shift + enter.

By default you will have output of last expression in cell:

1 + 1
1 + 2
Output:
3
If you want to have all outputs of expressions in cell at once then you have to run:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
After that you will have output of all expressions in cell (previous example will produce 2 and 3) without need of 'print'.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#3
(Aug-22-2018, 04:32 AM)miner_tom Wrote: I have this cell with a few lines of code that seems to run fine, under pycharm,
That because you run it with python 2 in PyCharm Configuring Python Interpreter.
As mention bye @ perfringo print() is a function in Python 3.
print(quicksort([3, 6, 8, 10, 1, 2, 1]))
You should run Python 3.6 --> both local and Jupyter Notebook.
Here a couple of tutorials Python 3.6/3.7 and pip installation under Windows | Anaconda.
Reply
#4
Thank you for the replies. I will try out your suggestions later on today and they make a lot of sense, because I did specifically set up the pycharm environment/interpreter as python 2.7. I did that because the documentation for the notebook that I downloaded from gitub noted that the notebook was built under python 2, specifically. I'll try changing interpreters and see what happens.

Thanks again
Tom
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  My code works on Jupyter Lab/Notebook, but NOT on Visual Code Editor jst 4 877 Nov-15-2023, 06:56 PM
Last Post: jst
  Navigating file directories and paths inside Jupyter Notebook Mark17 5 629 Oct-29-2023, 12:40 PM
Last Post: Mark17
  How to do 100 runs simulation based on the current codes? dududada 6 902 Sep-03-2023, 01:43 PM
Last Post: deanhystad
  How to programmatically stop a program in Jupyter Notebook? Mark17 11 36,312 Feb-12-2023, 01:41 PM
Last Post: jp21in
Thumbs Up Python 3 Jupyter notebook ternary plot data nicholas 0 897 Jan-21-2023, 05:01 PM
Last Post: nicholas
  Graphs from Jupyter notebook to word Scott 0 838 Nov-28-2022, 06:16 AM
Last Post: Scott
  Another program runs bho68 7 1,146 Nov-08-2022, 08:16 PM
Last Post: bho68
  Opening an empty Jupyter notebook in VSCODE Krischu 3 1,772 Mar-09-2022, 01:57 PM
Last Post: Larz60+
  Help Python vs Jupyter futureofAI 2 1,542 Oct-17-2021, 09:45 AM
Last Post: futureofAI
  How to do line continuation in Jupyter Notebook? Mark17 4 5,360 Sep-22-2021, 04:22 PM
Last Post: ibreeden

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020