我在一个列表(一个参数网格)上运行一个循环,并试图简单地打印循环的进度。我发现这是我的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)
如果我在普通脚本中执行此操作,并从文本编辑器或终端运行它,则会获得预期的输出:
^{pr2}$当我在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
值以及如何更新有关。但我还是搞不懂!在
我在搜索时发现的其他打印问题与笔记本电脑在运行时不打印有关,而是在最后(或在运行笔记本的终端)转储所有输出,但这不是我遇到的问题。在
我假设你的jupyter笔记本运行的是python2.x
默认情况下,如果对两个整数进行除法,则python2返回
0
,结果是<;1。在一种解决方法是在代码中添加
from __future__ import division
。在另一个解决方法,正如titipat在评论中建议的那样,是“强制”一个变量的行为类似于一个浮点,例如使用
float(curr_set)
或将curr_set
设置为1.0
。在相关问题 更多 >
编程相关推荐