我在列表(参数网格)上运行循环并尝试简单地打印循环的进度。我发现这是我的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
值有关,然后是如何更新的。我无法理解它!
我在搜索时发现的其他打印问题与在运行时不打印的笔记本有关,而是在最后(或在运行笔记本的终端中)转储所有输出,但这不是问题我有。
答案 0 :(得分:1)
我假设您的jupyter笔记本正在运行python2.x。
默认情况下,如果你划分两个整数并且结果是<而python 2返回0
。 1。
解决方法是将from __future__ import division
添加到您的代码中。
另一种解决方法,正如他的评论中提出的titipat,是“强制”你的一个变量表现得像一个浮点数,例如:使用float(curr_set)
或将curr_set
设置为1.0
。