Python在满足某些条件时添加到列表中

Python在满足某些条件时添加到列表中,python,Python,有人能解释为什么这不起作用吗 我认为应该根据number最初的值为div3num和div5num赋值。然后它应该命中if语句的哪一部分返回整数。例如1。1/3和1/5应该直接跳转到else部分,因此不会添加到列表中。但是三个人。3/3=1,因此应在列表中添加3。在我运行代码时,它会输入0-9之间的所有值 number = 0 divisnumbers = []; while len(divisnumbers) < 10: div3num = number / 3; div

有人能解释为什么这不起作用吗

我认为应该根据
number
最初的值为
div3num和div5num赋值。然后它应该命中if语句的哪一部分返回整数。例如1。1/3和1/5应该直接跳转到else部分,因此不会添加到列表中。但是三个人。3/3=1,因此应在列表中添加3。在我运行代码时,它会输入0-9之间的所有值

number = 0
divisnumbers = [];

while len(divisnumbers) < 10:
    div3num = number / 3;
    div5num = number / 5;
    if type(div3num) is int:
        divisnumbers.append(number)
        number += 1
    elif type(div5num) is int:
        divisnumbers.append(number)
        number += 1
    else:
        number += 1 

print divisnumbers
number=0
除数=[];
而len(除数)<10:
div3num=数字/3;
div5num=数字/5;
如果类型(div3num)为int:
除数。追加(数字)
数字+=1
elif类型(div5num)为int:
除数。追加(数字)
数字+=1
其他:
数字+=1
打印数字

因为在python2中,int类型变量除以int类型变量总是产生int(在python3中是float)

您可以使用模:

if number % 5 == 0:
    divisnumbers.append(number)

不要通过除法和检查类型来测试可分性(这永远不起作用;除法总是根据操作数的
类型和Python版本生成一个类型,而不依赖于操作数的值)

使用余数/mod运算符并验证整数除法后剩余的余数为0:

if number % 3 == 0:
    ...
elif number % 5 == 0:
    ...
...
作为旁注,您可以将
number+=1
完全移出
if/elif/else
链,并通过将整个链替换为以下内容来简化代码:

if number % 3 == 0 or number % 5 == 0:
    divisnumbers.append(number)
number += 1

请注意,
number
现在是无条件递增的(因为所有案例都是递增的,所以您可以将增量移出),您只有一个
append
调用(因为这两种情况下都是相同的
append
),等等。

如果number/3是int而不是number%3==0,我不明白为什么要使用它