使用 Jupyter Notebooks 构建高度交互的项目

利用小部件创建用户友好的环境来构建交互式 Python 和数据科学项目(奖励 – 2 个项目!)——大多数数据科学和 Python 项目通常是几乎没有交互性的代码行。对于初学者来说,这可能是一个相当大的问题,因为他们需要不断地使用 print 语句来了解他们目前正在从事的项目的逻辑和工作流程。

使用 Jupyter Notebooks 构建高度交互的项目

利用小部件创建用户友好的环境来构建交互式 Python 和数据科学项目(奖金 – 2 个项目!)

大多数数据科学和 Python 项目通常都是几行代码,几乎没有交互性。对于初学者来说,这可能是一个相当大的问题,因为他们需要不断地使用 print 语句来了解他们目前正在从事的项目的逻辑和工作流程。

即使使用图形用户界面 (GUI) 工具(例如 Tkinter、Kivy 和其他类似库),编程要求也更多。但是,如果有一种方法可以让用户利用小部件并通过 Jupyter Notebook 中的单行代码开发高交互性呢?

我们将在本文中探讨此类场景,了解一些交互式小部件功能的基础知识。然后,我们还将继续使用这些介绍性小部件构建几个简单、有趣和交互式的项目。

在我们直接深入了解 IPython 小部件的概念之前,有必要对 Jupyter Notebooks 有一个基本的了解。在我之前的一篇文章中,我介绍了与 Jupyter Notebooks 相关的大部分基本概念。您可以从下面提供的链接中查看此主题。

注意:文章末尾提供了基础知识和项目的 GitHub 链接。

IPython 小部件入门:

Ipywidgets,也称为 Jupyter 小部件或简称为“小部件”,是用于 Jupyter 笔记本和 IPython 内核的交互式 HTML 小部件。通常,小部件用于创建交互式 GUI 对象以允许其用户开发高度紧凑的项目。它们还可用于在 Python 和 JavaScript 之间同步有状态和无状态信息。有关更多信息,请点击这些参考文档的链接。[0]

安装这些小部件的过程非常方便,可以使用如下所示的以​​下命令完成。在安装期间,ipywidgets 库会自动为 Jupyter Notebook 配置所有必要的要求,而无需任何额外的配置。

pip install ipywidgets

一旦我们成功地安装了ipywidgets库,我们可以继续根据需要在每个Jupyter笔记本创造一个互动的项目。开始使用不同类型库中可用的widget的效用之前的第一步,我们需要导入ipywidgets库和IPython的显示命令用于显示这些互动部件提供给用户。

# Importing the ipywidgets library and IPython display moduleimport ipywidgets as widgets
from IPython.display import display

导入基本库后,用户可以继续实现 ipywidgets 工具包中可用的众多小部件。在本文的这一部分,我们将探讨程序员和开发人员可用的一些最常用的小部件选项的基础知识。

1. Slider:

widgets.IntSlider(value=50,
min=0,
max=100)

我们将看到的第一个小部件是整数滑块。它为用户提供了一个有用的选项,可以在特定范围内使用滑块来涵盖任何特定任务的各种操作。但是,您只能使用整数滑块检索整数值,我们在其中指定默认值以及滑块的最小和最大范围。

显示的滑块的默认方向是水平的。开发人员也可以使方向垂直。滑块还有其他选项,包括浮动滑块和浮动日志滑块,以及许多其他类似选项。

2. Dropdown:

widgets.Dropdown(
options=['1', '2', '3'],
value='1',
description='Number:',
disabled=False,
)

我们将在本节中看到的下一个交互式小部件是 Dropdown 小部件。此小部件显示允许用户从可用选项中进行选择的值列表。在上面的代码片段中,我将下拉框的值包括为 1、2 和 3,默认值为“1”。提供的描述是数字。我们可以使用下拉工具执行操作,以选择执行特定任务所需的任何值。

3. Textbox:

widgets.IntText(
value=3,
description='Numbers:',
disabled=False
)

接下来ipywidget我们将看看是文本框控件。顾名思义,这个小部件是用于输入文本数据转换成一个GUI箱有用。在上面的代码段中,我们可以看到,我们已经使用了整数文本小部件允许用户输入某个整数类型的数据。有文本框中输入,允许用户输入的字符串数据,包括文本和文本区域控件执行以下操作其他几个选项。下面是示出用于输入字符串类型数据的替代选择的样本代码。

Alternative code:

widgets.Text(
value='Hello World',
placeholder='Type something',
description='String:',
disabled=False
)

4. Radio Button:

widgets.RadioButtons(
options=['1', '2', '3'],
description='Numbers:',
disabled=False
)

我们将讨论的下一个 ipywidget 是单选按钮小部件,它允许用户选择一堆选项。如上面的代码片段所示,我们可以为 Radio Button 提供一个小描述,然后相应地声明选项。您可以使用这些单选按钮进行大量实验和项目,尤其是在您只能选择一个选项的情况下,例如多项选择题。

5. Checkbox:

widgets.Checkbox(
value=False,
description='I Agree to the terms and conditions',
disabled=False,
indent=False
)

我们将探索的倒数第二个基本小部件是复选框 ipywidget。借助复选框小部件,我们可以允许用户选择“是”或“否”。该复选框最初未选中。一旦用户点击复选框,我们就可以激活进一步的命令和操作。这些复选框可用于各种项目,包括条款和条件的协议,如上所示。

6. Toggle:

widgets.ToggleButtons(
options=['1', '2', '3'],
description='Numbers:',
disabled=False,
button_style=''
)

我们将看到的最后一个基本小部件是切换按钮。使用这些小部件,我们可以在一堆按钮之间进行切换,其中每个按钮的角色和功能都会相应地发生变化。在上面的代码片段中,我们可以注意到我们有一个要显示给用户的选项列表以及我们可以根据我们的要求添加的附加描述。

在接下来的部分中,我们将介绍几个可以借助 Jupyter Notebooks 中的 ipywidgets 构建的简单项目。在我们继续之前,我建议对其他类似 GUI 技术感兴趣的观众探索我之前的一篇文章,其中我介绍了供 Python 开发人员使用的七种最佳图形工具,以及来自下面提供的链接的一些入门代码。

注意:在 Jupyter Notebook 菜单栏上的小部件图标中,我们可以点击保存小部件选项我们暂时保存图标的小部件状态。如果您有兴趣了解有关不同类型的小部件选项和整个 ipywidget 库的更多信息,我建议您查看以下文档。[0]

Project-1: Temperature Converter

在对 Jupyter Notebook 小部件概念有基本了解后,我们将尝试使用这些小部件开发一些有趣且简单的交互式项目。在第一个项目中,我们将重点关注温度从摄氏到华氏的转换。我们将为此任务使用滑块小部件。让我们通过导入必要的库来开始该项目,如下面的代码片段所示。

# Importing the ipywidgets library and IPython display moduleimport ipywidgets as widgets
from IPython.display import display

在下一步中,我们将创建用于执行温度转换过程的函数。我们将定义 temp 函数,它将参数作为滑块小部件的值。将温度从摄氏度转换为华氏度的公式如下所述。您还可以使用 1.8 代替代码片段中公式中使用的 (9/5) 小数值。

# Define the function for temperature conversiondef temp(slider_value):
# Celsius to Fahrenheit conversion
F = (slider_value *(9/5)) + 32
return F

一旦我们完成了温度转换函数的定义,我们就可以继续定义滑块小部件,通过它我们可以控制摄氏温度。我们可以将这个小部件存储在一个变量中,如下所示。

slider = widgets.IntSlider()

定义滑块小部件后,我们可以继续显示它,以便用户可以根据需要相应地改变值。

display(slider)

当用户在显示的刻度上移动滑块时,滑块值会相应更新,表示摄氏刻度。我们可以通过我们之前定义的函数传递这些值来获得所需的华氏温度输出。

value = slider.value
temp(value)

Output:

77.0

当我们将滑块值传递为 25 摄氏度时,我们会得到预期的适当的 77.0 华氏度响应。这样的构建也可以用于其他项目,例如货币转换器等等!

Project-2: Quiz

在本文的第二个项目中,我们将学习如何借助这些 ipywidget 开发一个简单的交互式测验项目。让我们开始导入基本的库需求,如下面的代码片段所示。

# Importing the ipywidgets library and IPython display moduleimport ipywidgets as widgets
from IPython.display import display
import time

导入所有必要的库后,我们可以继续为该项目创建接下来的两个基本功能。首先,我们将定义一个函数来检查相关问题的答案。该函数接受两个参数参数,即问题编号和用户输入的问题答案。验证答案,并通知用户他们的答案是否正确。

在下一个功能中,我们将从切换按钮小部件中输入一个问题编号,并在单选按钮的帮助下显示问题及其各自的多选答案。我们将返回要选择的值并作为用户(或玩家)的答案输出。

# Creating the function for storing the Questions and Answers for the mini-quizdef answer_check(question, question_input):
if question_input == "Question-1":
if question.value == "7":
print("Correct Answer!")

else:
print("Incorrect Answer!")

elif question_input == "Question-2":
if question.value == "366":
print("Correct Answer!")

else:
print("Incorrect Answer!")
def mini_quiz(question):
if question == 'Question-1':
# q1 = widgets.IntText(value=0, description='How many continents are there in the world?')
q = widgets.RadioButtons(options=['4', '5', '6', '7'], description='How many continents are there in the world?:')
display(q)

elif question == 'Question-2':
q = widgets.RadioButtons(options=['364', '365', '366', '367'], description='How many days are there in a leap year?:')
display(q)

return q

在下一个代码块中,我们为用户提供了一个选项,可以从他们想要查看和回答的不同类型的问题中进行选择。我只给出了两个切换按钮选项,但是一旦你更好地掌握了 ipywidgets 库,这个项目就可以得到很大的改进。

question = widgets.ToggleButtons(options=['Question-1', 'Question-2'], description='Quiz:')
display(question)

现在让我们存储切换按钮的值,如下面的代码片段所示。

question_input = question.value
question_input

最后,我们可以开始调用我们的函数来相应地计算问题和答案。首先,我们将调用第一个函数来传递并显示问题及其各自的答案。

question = mini_quiz(question_input)

最后,我们将调用该函数来检查适当的答案。如果用户提供的解决方案是正确的,那么“正确答案!”显示评论。否则,答案不正确!”显示评论。

answer_check(question, question_input)

上面的屏幕截图显示了当用户选择了不正确的选项时会发生什么。

上面的屏幕截图表示当用户选择正确的选项时会发生什么。您可以使用此库构建几个额外的改进和不同种类的项目。我强烈鼓励观众尝试许多不同类型的项目。

Conclusion:

“在某些方面,编程就像绘画。你从一张空白画布和某些基本原材料开始。你结合科学、艺术和工艺来决定如何处理它们。”
— Andrew Hunt

交互性在开发用户友好的环境以及使初学者数据科学和编程爱好者能够以更好的直观理解探索众多概念方面发挥着巨大的作用。添加各种额外的小部件和交互功能有助于简化项目的导航和探索,因为您可以轻松控制多个参数。

在本文中,我们探讨了 ipywidgets 库以及它授予用户访问权限的众多功能。我们首先了解了可以在 Jupyter Notebooks 中使用的一些出色的基本小部件。然后,我们构建了几个简单、有趣且交互式的 Python 项目,您可以借助此工具轻松构建这些项目。

如果您想在我的文章发布后立即收到通知,请查看以下链接以订阅电子邮件推荐。如果您想支持其他作者和我,请订阅以下链接。[0]

如果您对本文所述的各个要点有任何疑问,请随时在下面的评论中告诉我。我会尽快回复您。您可以从以下 GitHub 链接访问基础知识和项目。[0]

查看我的其他一些与本文所涵盖主题相关的文章,您可能也会喜欢阅读!

谢谢大家一直坚持到最后。我希望你们都喜欢阅读这篇文章。祝大家有个美好的一天!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月13日
下一篇 2022年5月13日

相关推荐