当前位置: 首页 > 知识库问答 >
问题:

此if语句如何确定num%2是真还是假[重复]

楚钊
2023-03-14

好的,这是一段代码。代码的功能是获取一个值并确定它是奇数还是偶数。

def isEvenOrOdd(num):
    return 'odd' if num % 2 else 'even'

现在我的问题在于为什么这样做有效。我现在的看法是--

num%2返回一个值。如果num为3,则num%2=1。为什么1的值满足if条件?

我假设这是一个1和0的问题,但我尝试了与%4相同的代码,如果返回3,它仍然满足if语句。

我理解这对一些人来说可能是一个基本问题,所以我为理解这一点可能太慢而道歉。非常感谢。

谢谢你的帮助!我现在真的明白了

共有2个答案

竺翰海
2023-03-14

在python中,某些数据类型具有真值或假值,而不必是布尔值。例如

test = None
if test:
  print("working")
else:
  print("Not working")

你会注意到你得到一个输出的不工作的原因是对象没有被视为同样适用于其他一些数据类型,对于整数,只要一个值是零(0)它将把它作为False

所以在你的例子中,如果num%2返回0,那么你将有

'odd' if 0 else 'even' # will will return 'even'
苏硕
2023-03-14

原因与Python中对象的“真实性”有关。Python中的每个对象,即使不是布尔值,也被认为是“真实的”或“虚假的”。在这种情况下,整数被认为是“真实的”,当且仅当它不是零。

因此,如果该数为奇数,则其模数将为1,这被认为是真的。否则,模数将为0,这被认为是错误的。

如果将模数切换为4,如果余数不是零(即,如果数字不是4的倍数),则结果将为真。

 类似资料:
  • 问题内容: 我有两个桌子。一个拥有制造商信息,并包括他们可以销售的区域。另一个有他们的产品出售。我们必须根据地区来限制产品的可见性。这就像Netflix的系统中的视频只能在任何地方(1),在加拿大(2),在美国(3)都可以观看。 我正在尝试进行查询,以告诉我可以根据制造商表中的设置在哪里查看产品。 例如,在制造商表中,有两个字段称为Exposure_new和Exposure_used,每个字段的值

  • 问题内容: 在下面的代码中,该语句是仅从语句中跳出还是从循环中跳出? 我也需要它来打破循环。 问题答案: 那将打破for循环。实际上,只有在谈论时才有意义,因为它们从根本上打破了,而只有到下一个了。

  • 问题内容: 我有一个形式的edittext,当用户将文本输入到edittext中时,我希望程序可以检测到哪种语言插入了edittext。 有没有办法确定字符串是英语还是波斯语? 我找到了这个阿拉伯语代码 但是如何更改波斯语的此代码? 问题答案: 波斯语(也适用于乌尔都语)字母的所有可能的Unicode范围: 0x0600至0x06FF 0xFB50至0xFDFF 0xFE70至0xFEFF 因此,

  • 问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄

  • 2. if/else语句 if语句还可以带一个else子句(Clause),例如: if (x % 2 == 0) printf("x is even.\n"); else printf("x is odd.\n"); 这里的%是取模(Modulo)运算符,x%2表示x除以2所得的余数(Remainder),C语言规定%运算符的两个操作数必须是整型的。两个正数相除取余数很好理解,如果操作数中有

  • 问题内容: 我想针对AJAX请求与常规请求以不同的方式处理错误。 如何在Struts2操作中确定请求是否为AJAX? 问题答案: 您应该检查请求标头是否存在并且等于。 请注意,并非所有AJAX请求都具有此标头,例如,请求不发送该标头。如果您是使用(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。 您可以使用… 检查它是否存在,例如,当您对Stack Overflow投票时;)