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

Python any()-除了0之外,每个数字都返回true吗?[重复]

程枫
2023-03-14

我有多个数量输入字段,它只允许正整数值,在网页上。

我的第一个代码是这样的:

quantities = []
for form in forms:
    qty= form.cleaned_data['qty']
    if qty:
        quantities.append(qty)
if not quantities:
    raise forms.ValidationError("You didn't choose any books")

在查看了我的代码后,我发现了一个更短的版本:

if not any([form.cleaned_data['qty'] for form in forms]):
    raise forms.ValidationError("You didn't choose any books")

这会一直有效吗?除了0,每个整数的计算结果是否都是True

共有2个答案

简宏义
2023-03-14

给定整数(ints)作为域,答案是肯定的。Python中唯一错误的整数值是0。所有其他整数在计算为bool时都是True

宋华美
2023-03-14

一般来说,是的。

除非特别定义,否则python中的大多数对象都被认为是真的。

见来源

4.内置类型(Python 3留档)

4.1. 真值检验

任何对象都可以测试真值,用于if或while条件,或作为下面布尔运算的操作数

默认情况下,对象被视为true,除非其类定义了返回False的bool()方法或使用对象调用时返回零的len()方法。以下是大多数被认为是错误的内置对象:

定义为false的常量:

没有,也没有。

任何数字类型的零:0,0.0,0j,十进制(0),分数(0,1)

空序列和集合:“”,(),[],{},set(),范围(0)

除非另有说明,否则具有布尔结果的操作和内置函数始终返回0或False表示False,返回1或True表示True。

(重要例外:布尔运算或and始终返回其一个操作数。)

 类似资料:
  • 问题内容: 我写的是,我正在使用Netbeans向每个函数添加类似专业的注释。因此,我从每一个开始,然后按来让Netbeans完成用于以下功能的默认注释方案。 到现在为止,我一直只在PHP语言中使用它,在这种情况下,如果遵循PHP函数确实包含了声明,则Netbeans始终仅在注释方案中添加部分。在所谓的“过程”(不返回任何值的函数)上,缺少此部分。 今天,我为Javascript函数尝试了同样的事

  • 问题内容: 我最近阅读了许多有关使用JavaScript进行排序的答案,而且我经常偶然发现一个如下所示的compare函数: 因此,它是一个比较函数,如果大于1则返回1,如果小于OR EQUAL TO 则返回-1 。如MDN(link)所述,比较函数也可以返回零,以确保两项的相对位置保持不变: 如果compareFunction(a,b)返回0,则a和b彼此保持不变,但对所有不同元素进行排序。 因

  • 问题内容: 我试图除以2计数以返回一个百分比。 返回以下查询: 我应该应聘演员吗? 问题答案: 我会用两个s来做不同的事情:

  • -2147483648是32位整数类型的最小整数,但它似乎会在

  • 问题内容: 我在jsfiddle.net上玩,我很好奇为什么返回true? 这样: 但这不是: 这个怪癖有用吗? 问题答案: 操作顺序导致在javascript中解释为产生,并且true计为1,导致其返回true。 这也是为什么返回false,返回true,为什么将其解释为,从而导致的原因。

  • 问题内容: 我只是想计算增值税,但是当我除以100以获得总价格(price * VAT / 100)时,它返回了0.0。这是我的代码: ‘total’被定义为FLOAT而不是INT 问题答案: 您需要将表达式强制转换为。我在这里使用了float文字。