繁体   English   中英

在Python中找到整数和列表元素的余数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM