Как я могу получить поле ввода в JupyterLab?

Я пытаюсь запустить следующий код:

num=int(input("Enter a number: "))

if num > 0:

    print("That's a positive number!")

введите здесь описание изображения При первом запуске я получаю запрос на ввод под ячейкой кода с просьбой ввести число. Программа будет работать в JupyterLab должным образом, но только один раз. После того, как я попытаюсь снова запустить код (или скопировать и вставить его в новую ячейку), запрос «Введите число» больше не будет отображаться, но вместо него появится новая ячейка ввода:

введите описание изображения здесь

Как я могу исправить эту проблему?


person Sage Hopkins    schedule 07.09.2020    source источник


Ответы (2)


Хотя я не могу воспроизвести то, что вы описываете, как обходной путь, и если вы хотите отслеживать ввод, вы можете сделать:

while num != -999:
    num=int(input("Enter a number (to finish use -999): "))

    if num>0:
        print(num)

Вы можете использовать другое число, кроме -999, или вы также можете преобразовать его в int в операторе if и использовать некоторую строку для выхода из цикла while.

person aerijman    schedule 07.09.2020

Вы можете сделать это с помощью виджетов Jupyter!

Для отображения виджета вам понадобится такой код в ячейке:


import ipywidgets as widgets

numWidget = widgets.IntText(
    description='Enter a number:',
    disabled=False
)

Вы можете получить значение виджета, когда вам это нужно, с помощью:


num = numWidget.value
person Iñigo    schedule 07.09.2020