【问题标题】:Modulus operator confusing模运算符令人困惑
【发布时间】:2021-06-15 13:10:07
【问题描述】:

有人可以解释下面的代码“if not epoch%display n epoch”是什么意思吗?我的理解是,如果 epoch / display 没有剩余,则打印该语句。有人可以帮我澄清一下吗?

if not epoch%display_n_epoch:
        print(f"Epoch {epoch}: Train Loss: {train_loss:.3f} | Test Loss: {test_loss:.3f} ")

【问题讨论】:

  • 你的理解是正确的。如果没有更多上下文,很难猜测这段代码的意图。
  • if epoch % display_n_epoch == 0: 比依赖 not 0 计算结果为 True 的事实更清楚。

标签: python modulo


【解决方案1】:

假设由于缺少上下文而难以理解打印的文本,python 中的模块运算符% 只需返回除法的其余部分:

>>> a = 5
>>> b = 3
>>> a % b
2

在 python 中,每个非零数字在if 条件下都被视为布尔值True:

>>> bool(2)
True
>>> bool(-1)
True
>>> bool(0)
False

在您的情况下,您的条件为真,因此当epoch%display_n_epoch 返回零(not 反转处理后的布尔等效值)时,将打印该短语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多