在python中查找整数和列表元素的余数
我试图创建一个程序,将创建10个随机数,并测试它们是偶数还是奇数。 我有一个名为rand_list的列表,由在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
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。但是让我照你说的做。。。