[英]finding a remainder of an integer and a list element in 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'}我是否在比较两种不同类型的对象?
list.append()
remainder2 = intermediary %2
会产生错误,因为list.append()
返回None(作为错误状态)。 您还会每次在列表中添加2个随机整数。 您可能想要的是intermediary = 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
如果使用if语句呢?
if number%2 == 0
# is even
else
# is odd
您收到TyperError的原因是,您正在向Veritable分配方法调用-根本不执行任何操作(因此,错误消息中为NoneType)。 然后,您尝试对此NoneType进行操作,就好像它是一个Int。 这不会工作。
您的代码中几乎没有错误。
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.")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.