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

在python中查找整数和列表元素的余数,python,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

我试图创建一个程序,将创建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'}我正在比较两种不同类型的对象吗?

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


此外,请在问题中提供有效/格式良好的代码。缩进有点混乱,您还缺少一行代码。

remainder2=intermediate%2
产生错误,因为
list.append()
在错误状态下返回None。您还将每次向列表添加2个随机整数。您可能需要的是
intermediate=rand_list[-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
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

你使用的if语句怎么样

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

您之所以收到TyperError,是因为您正在将方法调用分配给veritable—这根本不起任何作用(因此错误消息中的NoneType)。然后,您尝试在这个非类型上执行一个操作,就像它是一个Int一样。这不起作用。

您使用的if语句怎么样

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

您之所以收到TyperError,是因为您正在将方法调用分配给veritable—这根本不起任何作用(因此错误消息中的NoneType)。然后,您尝试对这个非类型执行一个操作,就像它是一个Int一样。这是行不通的。

代码中几乎没有错误

1)
list.append()。
它不返回任何内容,或者更准确地说,它返回
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.")

代码中几乎没有错误

1)
list.append()。
它不返回任何内容,或者更准确地说,它返回
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.")

这不是很有帮助的答案。。。并且没有回答为什么OP会出现
TypeError
我认为这是一种改进的方法,可以避免TypeError。但让我照你说的做…这不是很有帮助的答案。。。并且没有回答为什么OP会出现
TypeError
我认为这是一种改进的方法,可以避免TypeError。但是让我照你说的做。。。