在python中查找整数的余数和list元素

时间:2014-06-30 21:47:47

标签: python

我正在尝试创建一个程序,它将创建10个随机数并测试它们是偶数还是奇数。 我有一个名为rand_list的列表,由

创建
rand_list = []

for int in range(10):  
    rand_list.append(random.randint(1,1000))
    intermediary = rand_list.append(random.randint(1,1000))
    remainder2 = intermediary % 2 #this statement produces an error
    print("the \i number is even \n", rand_list[int])
    else:
        print("the \i number is odd \n", rand_list[int])

我不明白为什么如果余数== 0:不起作用。它给了我{TypeError:不支持的操作数类型%:' NoneType'和' int'}我在比较两种不同类型的物体吗?

4 个答案:

答案 0 :(得分:3)

remainder2 = intermediary %2产生错误,因为list.append()返回None,因为错误状态。您还每次向列表中添加2个随机整数。您可能想要的是intermediary = rand_list[-1],它将返回列表中的最后一个元素。

此外,请在您的问题中提供工作/格式良好的代码。缩进有点令人困惑,你也错过了一行代码。

答案 1 :(得分:1)

append()函数不返回任何内容。它修改了列表。你想要做的就是这样的事情

rand_list.append(random.randint(1,1000))
intermediary = rand_list[-1]
remander2= intermediary % 2

或者更干净:

intermediary = random.randint(1,1000)
rand_list.append(intermediary)
remainder2 = intermdiary % 2

答案 2 :(得分:1)

如果使用if语句,则使用

if number%2 == 0
  # is even
else
  # is odd

您正在接收TyperError,因为您正在为一个名副其实的方法调用 - 这根本不做任何事情(因此您的错误消息中为NoneType)。然后尝试对此NoneType执行操作,就像它是Int一样。这不行。

答案 3 :(得分:0)

您的代码中几乎没有错误。

1)list.append() modyfies列表到位,在最后添加新元素。 它不返回任何内容,或者更准确地说,它返回None。 因此,您intermediary == None并且您无法使用%运算符 与None ...

您可以将随机数分配给变量:

x = random.randint(1,1000)
rand_list.append(x) # append it to your list
remainder = x % 2 # take remainder using

因为你只关心它是否为零,你可以稍后使用事实, 零在布尔上下文中等于False,以及所有其他数字 被视为True 所以你可以写一下:

is_odd = x % 2

或更具可读性:

is_odd = bool(x % 2)

2)另一个问题是,您错过了代码中的if。 实际上,您甚至没有使用remainder2变量! 正确的代码是:

if (remainder2 == 0):
    print("the \i number is even \n", rand_list[int])
else:
    print("the \i number is odd \n", rand_list[int])

或使用我上面的建议:

if is_odd:
    print("the \i number is odd \n", x)
else:
    print("the \i number is even \n", x)    

3)最后一点是,正如@Padraic Cunningham指出的那样, 你不应该使用int作为变量名。它不会产生错误, 当您影子类型为int且内置int()时。

总而言之,您的代码可能如下所示:

rand_list = []

for i in range(10):  
    x = random.randint(1,1000)
    if (x % 2):
        print(i, '-', x, "- the number is odd.")
    else:
        print(i, '-', x, "- the number is even.")