首页 > 解决方案 > 在添加/删除术语时从列表中生成随机数

问题描述

我正在编写一个程序,其中有 6 个人组成的“小组”试图猜测 1 到 6 之间的数字。如果第一个人猜对了,那么他们的分数就会加 1,如果不是,第二个人会猜. 如果他们是对的,那么他们的分数就会加 1,依此类推。但是,第二个人无法猜出与第一个人相同的数字——这是我一直遇到的问题。出于某种原因,我得到

TypeError:“NoneType”类型的对象没有 len()

我认为 NoneType 是某种可变的东西,但我不太确定。我也没有使用函数 len 。代码如下。

a = [1, 2, 3, 4, 5, 6]
judge = random.choice(a)
p1guess = random.choice(a) 
a = a.remove(p1guess)
p2guess = random.choice(a)
a = a.remove(p2guess)
p3guess = random.choice(a)
a = a.remove(p3guess)
p4guess = random.choice(a)
a = a.remove(p4guess)
p5guess = random.choice(a)
a = a.remove(p5guess)
p6guess = random.choice(a)

标签: python

解决方案


remove返回 none 并原地删除,不要将其重新分配回 a.

...
p1guess = random.choice(a) 
a.remove(p1guess)
p2guess = random.choice(a)
...

否则,您可以只洗牌 a 并一次分配它们,

a = [1, 2, 3, 4, 5, 6]
random.shuffle(a)
judge = random.choice(a)

p1guess, p2guess, p3guess, p4guess, p5guess, p6guess = a

推荐阅读