在Jupyter循环期间打印

时间:2017-02-24 17:42:11

标签: python printing jupyter-notebook

我在列表(参数网格)上运行循环并尝试简单地打印循环的进度。我发现这是我的Jupyter笔记本电脑的一个问题。

我有以下代码来解决问题:

hiddens = [2, 3]
iters = [5, 10]

para_grid = [(hidden, it) 
             for hidden in hiddens
             for it in iters]

num_sets = len(para_grid)       # length = 4

curr_set = 1

for para_set in para_grid:

    print("Completed {: f}%".format(curr_set/num_sets * 100))
    curr_set += 1

    x = para_set

    print(x)

如果我在普通脚本中执行此操作并从文本编辑器或终端运行它,我将获得预期的输出:

>>> Completed  25.000000%
(2, 5)
Completed  50.000000%
(2, 10)
Completed  75.000000%
(2, 5)
Completed  100.000000%
(2, 10)

当我在Jupyter笔记本中执行此操作时,就像计算上面的进度一样:curr_set/num_sets * 100只是一直返回零。以下是结果打印输出:

Completed  0.000000%
(2, 5)
Completed  0.000000%
(2, 10)
Completed  0.000000%
(3, 5)
Completed  0.000000%
(3, 10)

我测试的其他方法取得了一些成功,所有这些都让我觉得它与curr_set值有关,然后是如何更新的。我无法理解它!

我在搜索时发现的其他打印问题与在运行时不打印的笔记本有关,而是在最后(或在运行笔记本的终端中)转储所有输出,但这不是问题我有。

1 个答案:

答案 0 :(得分:1)

我假设您的jupyter笔记本正在运行python2.x。

默认情况下,如果你划分两个整数并且结果是<而python 2返回0。 1。

解决方法是将from __future__ import division添加到您的代码中。

另一种解决方法,正如他的评论中提出的titipat,是“强制”你的一个变量表现得像一个浮点数,例如:使用float(curr_set)或将curr_set设置为1.0