j1-template 2022.4.1 → 2022.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_article_navigator.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +1 -1
  5. data/assets/themes/j1/adapter/js/nbinteract.js +11 -0
  6. data/assets/themes/j1/modules/bokeh/README.md +380 -0
  7. data/assets/themes/j1/modules/bokeh/js/v2.4.3/bokeh.min.js +596 -0
  8. data/assets/themes/j1/modules/nbInteract/css/theme/uno/nbinteract-core.css +7 -0
  9. data/assets/themes/j1/modules/nbInteract/css/theme/uno/nbinteract-core.min.css +1 -1
  10. data/assets/themes/j1/modules/vega/js/vega/LICENSE +27 -0
  11. data/assets/themes/j1/modules/vega/js/vega/README.md +42 -0
  12. data/assets/themes/j1/modules/vega/js/vega/vega-core.js +34550 -0
  13. data/assets/themes/j1/modules/vega/js/vega/vega-core.min.js +2 -0
  14. data/assets/themes/j1/modules/vega/js/vega/vega-core.min.js.map +1 -0
  15. data/assets/themes/j1/modules/vega/js/vega/vega.js +49095 -0
  16. data/assets/themes/j1/modules/vega/js/vega/vega.min.js +2 -0
  17. data/assets/themes/j1/modules/vega/js/vega/vega.min.js.map +1 -0
  18. data/assets/themes/j1/modules/vega/js/vega-embed/LICENSE +27 -0
  19. data/assets/themes/j1/modules/vega/js/vega-embed/README.md +230 -0
  20. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.js +6607 -0
  21. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.js.map +1 -0
  22. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.min.js +21 -0
  23. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.min.js.map +1 -0
  24. data/assets/themes/j1/modules/vega/js/vega-lite/LICENSE +27 -0
  25. data/assets/themes/j1/modules/vega/js/vega-lite/README.md +34 -0
  26. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite-schema.json +30999 -0
  27. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.js +24585 -0
  28. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.js.map +1 -0
  29. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.min.js +2 -0
  30. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.min.js.map +1 -0
  31. data/lib/j1/version.rb +1 -1
  32. data/lib/starter_web/Gemfile +1 -1
  33. data/lib/starter_web/_config.yml +1 -1
  34. data/lib/starter_web/_data/modules/defaults/nbinteract.yml +1 -1
  35. data/lib/starter_web/_data/modules/navigator_menu.yml +40 -23
  36. data/lib/starter_web/_data/modules/nbinteract.yml +314 -295
  37. data/lib/starter_web/_data/resources.yml +101 -0
  38. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  39. data/lib/starter_web/assets/images/modules/attics/wrongtog-1920x1280.jpg +0 -0
  40. data/lib/starter_web/assets/images/modules/attics/yellow-cactus-1920x1280.jpg +0 -0
  41. data/lib/starter_web/assets/images/modules/icons/bokeh/bokeh-32x32.ico +0 -0
  42. data/lib/starter_web/assets/images/modules/icons/bokeh/bokeh.ico +0 -0
  43. data/lib/starter_web/assets/images/modules/icons/bokeh/logo-160x160.png +0 -0
  44. data/lib/starter_web/package.json +1 -1
  45. data/lib/starter_web/pages/public/jupyter/examples/{j1-circular-times-table.adoc → distributed/j1-circular-times-table.adoc} +7 -2
  46. data/lib/starter_web/pages/public/jupyter/examples/{j1-interactive-widgets.adoc → distributed/j1-common-used-widgets.adoc} +14 -6
  47. data/lib/starter_web/pages/public/jupyter/examples/{j1-odes-in-python.adoc → distributed/j1-odes-in-python.adoc} +7 -2
  48. data/lib/starter_web/pages/public/jupyter/examples/{j1_climate-change-forecast.adoc → localized/j1_climate-change-forecast.adoc} +10 -5
  49. data/lib/starter_web/pages/public/jupyter/where_to_go.adoc +239 -0
  50. data/lib/starter_web/pages/public/learn/where_to_go.adoc +23 -7
  51. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  52. data/lib/starter_web/utilsrv/package.json +1 -1
  53. metadata +35 -30
  54. data/lib/starter_web/pages/public/jupyter/docs/_includes/attributes.asciidoc +0 -58
  55. data/lib/starter_web/pages/public/jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
  56. data/lib/starter_web/pages/public/jupyter/docs/j1-nbinteract-doc.adoc +0 -563
  57. data/lib/starter_web/pages/public/jupyter/docs/nbi-widget-manual.adoc +0 -465
  58. data/lib/starter_web/pages/public/jupyter/docs/nbinteract-doc.adoc +0 -473
  59. data/lib/starter_web/pages/public/jupyter/examples/j1-testing-plotly.adoc +0 -94
  60. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
  61. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
  62. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
  63. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -738
  64. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
  65. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
  66. data/lib/starter_web/pages/public/jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
  67. data/lib/starter_web/pages/public/jupyter/notebooks/j1/line_by_line.mp4 +0 -0
  68. data/lib/starter_web/pages/public/jupyter/notebooks/j1/point_by_point.mp4 +0 -0
  69. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
  70. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
  71. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
  72. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
  73. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
  74. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
  75. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
  76. data/lib/starter_web/pages/public/jupyter/services/binderhub.adoc +0 -564
  77. data/lib/starter_web/pages/public/jupyter/services/jupyterhub.adoc +0 -244
@@ -1,387 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "metadata": {},
6
- "source": [
7
- "### Plotting using `nbinteract`"
8
- ]
9
- },
10
- {
11
- "cell_type": "markdown",
12
- "metadata": {},
13
- "source": [
14
- "`nbinteract` comes with a set of functions that produce Javascript-based plots designed for interaction.\n",
15
- "\n",
16
- "Most plotting functions that come with `nbinteract` take in response functions that return the **data** to be plotted."
17
- ]
18
- },
19
- {
20
- "cell_type": "code",
21
- "execution_count": 1,
22
- "metadata": {},
23
- "outputs": [],
24
- "source": [
25
- "import nbinteract as nbi\n",
26
- "import numpy as np"
27
- ]
28
- },
29
- {
30
- "cell_type": "markdown",
31
- "metadata": {},
32
- "source": [
33
- "For a complete API reference for each function, you may type the function name in a cell and add a `?` at the end. For example, to view the API reference for `nbi.hist`:"
34
- ]
35
- },
36
- {
37
- "cell_type": "code",
38
- "execution_count": 2,
39
- "metadata": {},
40
- "outputs": [],
41
- "source": [
42
- "nbi.hist?"
43
- ]
44
- },
45
- {
46
- "cell_type": "markdown",
47
- "metadata": {},
48
- "source": [
49
- "#### `nbinteract.hist`"
50
- ]
51
- },
52
- {
53
- "cell_type": "markdown",
54
- "metadata": {},
55
- "source": [
56
- "`hist` generates a histogram that allows interaction with the parameters for the response function. \n",
57
- "\n",
58
- "`hist` takes in a single response function. The response function returns the array of numerical values that will be shown in the histogram. The `hist` function allows interaction with the response function's parameters by specifying them as keyword arguments in the same format as `ipywidgets.interact`. Any argument that can be used for `ipywidgets.interact` can be used for `hist`."
59
- ]
60
- },
61
- {
62
- "cell_type": "code",
63
- "execution_count": 3,
64
- "metadata": {},
65
- "outputs": [],
66
- "source": [
67
- "def hist_response_function(mean, sd, size=1000):\n",
68
- " '''\n",
69
- " Returns 1000 values picked at random from the normal\n",
70
- " distribution with the mean and SD given.\n",
71
- " '''\n",
72
- " return np.random.normal(loc=mean, scale=sd, size=1000)"
73
- ]
74
- },
75
- {
76
- "cell_type": "code",
77
- "execution_count": 13,
78
- "metadata": {
79
- "scrolled": false
80
- },
81
- "outputs": [
82
- {
83
- "data": {
84
- "application/vnd.jupyter.widget-view+json": {
85
- "model_id": "a5636ca1591943a39bbe131a1cf79eaa",
86
- "version_major": 2,
87
- "version_minor": 0
88
- },
89
- "text/plain": [
90
- "VBox(children=(interactive(children=(IntSlider(value=5, description='mean', max=10), FloatSlider(value=1.0, de…"
91
- ]
92
- },
93
- "metadata": {},
94
- "output_type": "display_data"
95
- }
96
- ],
97
- "source": [
98
- "nbi.hist(hist_response_function, mean=(0, 10), sd=(0.2, 2.0, 0.2))"
99
- ]
100
- },
101
- {
102
- "cell_type": "markdown",
103
- "metadata": {},
104
- "source": [
105
- "If you interact with the above plot, you may notice that the plot's x and y-axes will automatically scale to match the input data. You can change plot parameters like the axes limits through the `options` parameter of the plotting functions:"
106
- ]
107
- },
108
- {
109
- "cell_type": "code",
110
- "execution_count": 11,
111
- "metadata": {},
112
- "outputs": [
113
- {
114
- "data": {
115
- "application/vnd.jupyter.widget-view+json": {
116
- "model_id": "3b52fe08cd764b73bad8f2a92477d955",
117
- "version_major": 2,
118
- "version_minor": 0
119
- },
120
- "text/plain": [
121
- "VBox(children=(interactive(children=(IntSlider(value=5, description='mean', max=10), FloatSlider(value=1.0, de…"
122
- ]
123
- },
124
- "metadata": {},
125
- "output_type": "display_data"
126
- }
127
- ],
128
- "source": [
129
- "options = {\n",
130
- " 'title': '1000 random points from normal distribution',\n",
131
- " 'xlim': (0, 15),\n",
132
- " 'ylim': (0, 0.4),\n",
133
- "}\n",
134
- "nbi.hist(hist_response_function, options=options, mean=(0, 10), sd=(0.2, 2.0, 0.2))"
135
- ]
136
- },
137
- {
138
- "cell_type": "markdown",
139
- "metadata": {},
140
- "source": [
141
- "You may call `nbinteract` plotting functions with plain data as the input as well:"
142
- ]
143
- },
144
- {
145
- "cell_type": "code",
146
- "execution_count": 6,
147
- "metadata": {},
148
- "outputs": [
149
- {
150
- "data": {
151
- "application/vnd.jupyter.widget-view+json": {
152
- "model_id": "f86ec97cd7ca493280a1815edd8f0ae9",
153
- "version_major": 2,
154
- "version_minor": 0
155
- },
156
- "text/plain": [
157
- "VBox(children=(interactive(children=(Output(),), _dom_classes=('widget-interact',)), Figure(axes=[Axis(scale=L…"
158
- ]
159
- },
160
- "metadata": {},
161
- "output_type": "display_data"
162
- }
163
- ],
164
- "source": [
165
- "nbi.hist(np.random.normal(size=1000))"
166
- ]
167
- },
168
- {
169
- "cell_type": "markdown",
170
- "metadata": {},
171
- "source": [
172
- "#### `nbinteract.bar`"
173
- ]
174
- },
175
- {
176
- "cell_type": "markdown",
177
- "metadata": {},
178
- "source": [
179
- "`bar` generates an bar plot that allows interaction with the parameters for the response functions.\n",
180
- "\n",
181
- "The first two arguments of `bar` are response functions that return the x and y-axis data arrays, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `bar` in the format expected by interact. The response function for the y-axis data will be called with the x-axis data as its first argument.\n",
182
- "\n",
183
- "For example, in the bar plot below `categories` generates the categories to plot on the x-axis and `heights` generates the y-axis heights. The `heights` function uses the parameter `xs` which is the array of x-axis data points. "
184
- ]
185
- },
186
- {
187
- "cell_type": "code",
188
- "execution_count": 14,
189
- "metadata": {},
190
- "outputs": [
191
- {
192
- "data": {
193
- "application/vnd.jupyter.widget-view+json": {
194
- "model_id": "00316ec6767f4b879a61bef75599f78e",
195
- "version_major": 2,
196
- "version_minor": 0
197
- },
198
- "text/plain": [
199
- "VBox(children=(interactive(children=(IntSlider(value=6, description='n', max=10, min=3), IntSlider(value=5, de…"
200
- ]
201
- },
202
- "metadata": {},
203
- "output_type": "display_data"
204
- }
205
- ],
206
- "source": [
207
- "def categories(n): \n",
208
- " return np.arange(n)\n",
209
- "\n",
210
- "def heights(xs, offset):\n",
211
- " return xs + offset\n",
212
- "\n",
213
- "opts = {\n",
214
- " 'ylim': (0, 20),\n",
215
- "}\n",
216
- "\n",
217
- "nbi.bar(categories, heights, n=(3, 10), offset=(1, 10), options=opts)"
218
- ]
219
- },
220
- {
221
- "cell_type": "markdown",
222
- "metadata": {},
223
- "source": [
224
- "#### `nbinteract.scatter_drag`"
225
- ]
226
- },
227
- {
228
- "cell_type": "markdown",
229
- "metadata": {},
230
- "source": [
231
- "`scatter_drag` generates a scatter plot that allows interaction through clicking and dragging the points on the graph. \n",
232
- "\n",
233
- "`scatter_drag` takes in two lists/arrays consisting of the x-coordinates and y-coordinates of the points to plot. It generates an interactive scatter plot where the points can be dragged by the user and a best fit line is updated automatically according to the placement of the points.\n",
234
- "\n",
235
- "`scatter_drag` does not allow response functions as inputs."
236
- ]
237
- },
238
- {
239
- "cell_type": "code",
240
- "execution_count": 8,
241
- "metadata": {
242
- "scrolled": false
243
- },
244
- "outputs": [
245
- {
246
- "data": {
247
- "application/vnd.jupyter.widget-view+json": {
248
- "model_id": "6b6494e0a17c4e2e8477509d44b1432e",
249
- "version_major": 2,
250
- "version_minor": 0
251
- },
252
- "text/plain": [
253
- "VBox(children=(Label(value='y = 0.94x + 0.66'), Figure(animation_duration=250, axes=[Axis(scale=LinearScale(ma…"
254
- ]
255
- },
256
- "metadata": {},
257
- "output_type": "display_data"
258
- }
259
- ],
260
- "source": [
261
- "x_coords = np.arange(10)\n",
262
- "y_coords = np.arange(10) + np.random.rand(10)\n",
263
- "\n",
264
- "opts = {'xlim': (0, 9), 'ylim': (0, 11), 'animation_duration': 250}\n",
265
- "\n",
266
- "nbi.scatter_drag(x_coords, y_coords, options=opts)"
267
- ]
268
- },
269
- {
270
- "cell_type": "markdown",
271
- "metadata": {},
272
- "source": [
273
- "#### `nbinteract.scatter`"
274
- ]
275
- },
276
- {
277
- "cell_type": "markdown",
278
- "metadata": {},
279
- "source": [
280
- "`scatter` generates a scatter plot that allows interaction with the parameters to the response functions. \n",
281
- "This is different from scatter_drag which facilitates interaction using click and drag actions.\n",
282
- "\n",
283
- "The first two arguments of `scatter` are response functions that return the x and y-axis coordinates, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `scatter` in the format expected by interact. The response function for the y-coordinates will be called with the x-coordinates as its first argument."
284
- ]
285
- },
286
- {
287
- "cell_type": "code",
288
- "execution_count": 15,
289
- "metadata": {
290
- "scrolled": false
291
- },
292
- "outputs": [
293
- {
294
- "data": {
295
- "application/vnd.jupyter.widget-view+json": {
296
- "model_id": "847b13ca28274786b3209932e3a74f77",
297
- "version_major": 2,
298
- "version_minor": 0
299
- },
300
- "text/plain": [
301
- "VBox(children=(interactive(children=(IntSlider(value=105, description='n', max=200, min=10), Output()), _dom_c…"
302
- ]
303
- },
304
- "metadata": {},
305
- "output_type": "display_data"
306
- }
307
- ],
308
- "source": [
309
- "def x_values(n): return np.random.choice(100, n)\n",
310
- "def y_values(xs): return np.random.choice(100, len(xs))\n",
311
- "\n",
312
- "nbi.scatter(x_values, y_values, n=(10,200))"
313
- ]
314
- },
315
- {
316
- "cell_type": "markdown",
317
- "metadata": {},
318
- "source": [
319
- "#### `nbinteract.line`"
320
- ]
321
- },
322
- {
323
- "cell_type": "markdown",
324
- "metadata": {},
325
- "source": [
326
- "`line` generates a scatter plot that allows interaction with the parameters to the response functions. \n",
327
- "\n",
328
- "The first two arguments of `line` are response functions that return the x and y-axis coordinates, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `line` in the format expected by interact. The response function for the y-coordinates will be called with the x-coordinates as its first argument."
329
- ]
330
- },
331
- {
332
- "cell_type": "code",
333
- "execution_count": 10,
334
- "metadata": {},
335
- "outputs": [
336
- {
337
- "data": {
338
- "application/vnd.jupyter.widget-view+json": {
339
- "model_id": "b23113b7d9f54ca0844bc5874ca92137",
340
- "version_major": 2,
341
- "version_minor": 0
342
- },
343
- "text/plain": [
344
- "VBox(children=(interactive(children=(IntSlider(value=30, description='max', max=50, min=10), IntSlider(value=5…"
345
- ]
346
- },
347
- "metadata": {},
348
- "output_type": "display_data"
349
- }
350
- ],
351
- "source": [
352
- "def x_values(max): return np.arange(0, max)\n",
353
- "def y_values(xs, sd):\n",
354
- " return xs + np.random.normal(0, scale=sd, size=len(xs))\n",
355
- "\n",
356
- "opts = {\n",
357
- " 'xlim': (0, 50),\n",
358
- " 'ylim': (0, 55),\n",
359
- " 'animation_duration': 250,\n",
360
- "}\n",
361
- "\n",
362
- "nbi.line(x_values, y_values, max=(10, 50), sd=(1, 10), options=opts)"
363
- ]
364
- }
365
- ],
366
- "metadata": {
367
- "kernelspec": {
368
- "display_name": "Python 3",
369
- "language": "python",
370
- "name": "python3"
371
- },
372
- "language_info": {
373
- "codemirror_mode": {
374
- "name": "ipython",
375
- "version": 3
376
- },
377
- "file_extension": ".py",
378
- "mimetype": "text/x-python",
379
- "name": "python",
380
- "nbconvert_exporter": "python",
381
- "pygments_lexer": "ipython3",
382
- "version": "3.7.9"
383
- }
384
- },
385
- "nbformat": 4,
386
- "nbformat_minor": 2
387
- }
@@ -1,185 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "metadata": {},
6
- "source": [
7
- "### Interactive Questions\n",
8
- "nbinteract also provides built-in methods to easily create multiple choice and short answer questions."
9
- ]
10
- },
11
- {
12
- "cell_type": "code",
13
- "execution_count": 1,
14
- "metadata": {},
15
- "outputs": [],
16
- "source": [
17
- "import nbinteract as nbi"
18
- ]
19
- },
20
- {
21
- "cell_type": "markdown",
22
- "metadata": {},
23
- "source": [
24
- "#### nbinteract.multiple_choice\n",
25
- "\n",
26
- "`nbinteract.multiple_choice` takes a question, a list of possible answer choices, and the correct answer. Clicking the buttons shows whether the choice was correct."
27
- ]
28
- },
29
- {
30
- "cell_type": "code",
31
- "execution_count": 7,
32
- "metadata": {},
33
- "outputs": [
34
- {
35
- "data": {
36
- "application/vnd.jupyter.widget-view+json": {
37
- "model_id": "5e2cf7e8eff64a6aaf9dfcad8cfa63eb",
38
- "version_major": 2,
39
- "version_minor": 0
40
- },
41
- "text/plain": [
42
- "VBox(children=(HTML(value='<p style=\"line-height:18px;\">What is 10 + 2 * 5?</p>'), HBox(children=(Button(layou…"
43
- ]
44
- },
45
- "metadata": {},
46
- "output_type": "display_data"
47
- }
48
- ],
49
- "source": [
50
- "nbi.multiple_choice(question=\"What is 10 + 2 * 5?\",\n",
51
- " choices=['12', '60', '20'],\n",
52
- " answers=2)"
53
- ]
54
- },
55
- {
56
- "cell_type": "code",
57
- "execution_count": 8,
58
- "metadata": {},
59
- "outputs": [
60
- {
61
- "data": {
62
- "application/vnd.jupyter.widget-view+json": {
63
- "model_id": "29e1ab27776a49b0b832c241d449c92a",
64
- "version_major": 2,
65
- "version_minor": 0
66
- },
67
- "text/plain": [
68
- "VBox(children=(HTML(value='<p style=\"line-height:18px;\">Select all prime numbers.</p>'), HBox(children=(Button…"
69
- ]
70
- },
71
- "metadata": {},
72
- "output_type": "display_data"
73
- }
74
- ],
75
- "source": [
76
- "nbi.multiple_choice(question=\"Select all prime numbers.\",\n",
77
- " choices=['12', '3', '31'],\n",
78
- " answers=[1, 2])"
79
- ]
80
- },
81
- {
82
- "cell_type": "markdown",
83
- "metadata": {},
84
- "source": [
85
- "#### nbinteract.short_answer\n",
86
- "\n",
87
- "`nbinteract.short_answer` takes a question and an answer. The answer can either be a string, a list of strings, or a function that returns `True` when called with the user's input. If the function errors, an error message will be displayed."
88
- ]
89
- },
90
- {
91
- "cell_type": "code",
92
- "execution_count": 9,
93
- "metadata": {},
94
- "outputs": [
95
- {
96
- "data": {
97
- "application/vnd.jupyter.widget-view+json": {
98
- "model_id": "e30f724e97bf4d5fac072777e3fe1d45",
99
- "version_major": 2,
100
- "version_minor": 0
101
- },
102
- "text/plain": [
103
- "VBox(children=(HTML(value='<p style=\"line-height:18px;\">What is 1+1?</p>'), HBox(children=(Text(value='', plac…"
104
- ]
105
- },
106
- "metadata": {},
107
- "output_type": "display_data"
108
- }
109
- ],
110
- "source": [
111
- "nbi.short_answer('What is 1+1?', answers='2', explanation='1+1 is 2')"
112
- ]
113
- },
114
- {
115
- "cell_type": "code",
116
- "execution_count": 10,
117
- "metadata": {},
118
- "outputs": [
119
- {
120
- "data": {
121
- "application/vnd.jupyter.widget-view+json": {
122
- "model_id": "c171c255bbb74f289fe3211f41430ab6",
123
- "version_major": 2,
124
- "version_minor": 0
125
- },
126
- "text/plain": [
127
- "VBox(children=(HTML(value='<p style=\"line-height:18px;\">Enter the first name of a member of the Beatles.</p>')…"
128
- ]
129
- },
130
- "metadata": {},
131
- "output_type": "display_data"
132
- }
133
- ],
134
- "source": [
135
- "nbi.short_answer('Enter the first name of a member of the Beatles.',\n",
136
- " ['John', 'Paul', 'George', 'Ringo'])"
137
- ]
138
- },
139
- {
140
- "cell_type": "code",
141
- "execution_count": 6,
142
- "metadata": {},
143
- "outputs": [
144
- {
145
- "data": {
146
- "application/vnd.jupyter.widget-view+json": {
147
- "model_id": "84b47630b6bf4e8f9f318d8502e161f3",
148
- "version_major": 2,
149
- "version_minor": 0
150
- },
151
- "text/plain": [
152
- "VBox(children=(HTML(value='<p style=\"line-height:18px;\">Enter an even number.</p>'), HBox(children=(Text(value…"
153
- ]
154
- },
155
- "metadata": {},
156
- "output_type": "display_data"
157
- }
158
- ],
159
- "source": [
160
- "nbi.short_answer('Enter an even number.', lambda x: int(x) % 2 == 0)"
161
- ]
162
- }
163
- ],
164
- "metadata": {
165
- "kernelspec": {
166
- "display_name": "Python 3",
167
- "language": "python",
168
- "name": "python3"
169
- },
170
- "language_info": {
171
- "codemirror_mode": {
172
- "name": "ipython",
173
- "version": 3
174
- },
175
- "file_extension": ".py",
176
- "mimetype": "text/x-python",
177
- "name": "python",
178
- "nbconvert_exporter": "python",
179
- "pygments_lexer": "ipython3",
180
- "version": "3.7.9"
181
- }
182
- },
183
- "nbformat": 4,
184
- "nbformat_minor": 2
185
- }