【问题标题】:python : meaning of if not (p%q):python:如果不是(p%q)的含义:
【发布时间】:2021-11-24 03:42:50
【问题描述】:

这是我从一篇论文中得到的代码。

我想知道:

if not (p%q)

x = 0
p = 2
while(p<7):
  q=2
  while(q<p):
    if not (p%q):q=p
    q+=1
  if(q>p):x+=p
  p+=1
print(x)`

【问题讨论】:

  • 查看 krmogi 和 j1-lee 的两个答案。我非常喜欢写if p%q == 0 而不是if not (p%q)。前者很容易阅读,后者是不必要的聪明。当你做数学时,写一个数学表达式;做逻辑的时候,写一个逻辑表达式。

标签: python if-statement logic


【解决方案1】:

本质上是说if True(如果模== 0)。模符号 (%) 获取除法的余数。模运算符 (%) 被认为是算术运算。所以既然它在做2/2,我们得到一个模0。现在语句是if not 0:

话虽如此,Python 中有真值和假值:

计算结果为 False 的值被认为是 Falsy。评估为 True 的值被认为是真实的。

一些真实的价值观包括:

  • 非空序列或集合

  • 不为零的数值。

一些虚假值包括:

  • 任何数字类型的零。
  • 空序列或集合
  • 无和假

所以代码现在翻译if not False:(如果模数!= 0),这与if True(如果模数== 0)相同。

【讨论】:

    【解决方案2】:

    条件not (p % q)等价于p % q == 0

    对于数字,零是“假”,所有其他都是“真”:https://docs.python.org/3/library/stdtypes.html#truth。因此,我们有

    "p % q == 0" iff(即,当且仅当)"p % q is False" iff "not (p % q) is True"。

    因此,if p % q == 0: 等价于if not (p % q) is True:,而if not (p % q): 又等价于is True,因为is True 部分可以省略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 2011-04-04
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      相关资源
      最近更新 更多