对于我的家庭作业,我应该随机选择列表中的项目。到目前为止,我有这样的代码,如何随机选择集合中的项目
import random
room = range(0, 365)
r = random.choice(room)
mySet = set(r)
然而,当我试图运行程序,它说,“‘廉政’没有迭代”。
我想知道如何解决这个问题?
对于我的家庭作业,我应该随机选择列表中的项目。到目前为止,我有这样的代码,如何随机选择集合中的项目
import random
room = range(0, 365)
r = random.choice(room)
mySet = set(r)
然而,当我试图运行程序,它说,“‘廉政’没有迭代”。
我想知道如何解决这个问题?
However, when I attempt to run the program, it says that " 'int' is no iterable".
I was wondering how I can fix this problem?
使用randint
:
>>> from random import randint
>>> randint(0, 360)
86
>>> var = randint(0, 360)
>>> isinstance(var, int)
True
set
实际上是在python一个类型,像list
或dict
的对象。因此,当你从random.choice
传递int
时,它会给你一个错误,因为它需要一个list
,你可以循环的东西是一个iterable
对象。因此,举例来说:
>>> set([1,3,4,5,2])
set([1, 2, 3, 4, 5])
会的工作,但你试图做的是这样的:
>>> set(1) # 1 is used as a number here
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'int' object is not iterable
如果你想创建一个随机的列表,你可以做这样的事情:
>>> [randint(0, 360) for _ in xrange(10)]
[234, 122, 294, 71, 204, 360, 359, 318, 273, 212]
上面的代码为您创建了10个随机整数。如果你想要一个set
,你可以使用set
函数来获得一个,但我认为它对你理解什么set
是什么和它的作用很重要。 Documentation。
使用'randint'时明显好于'random.choice(range(...))',你应该尝试解释OP得到错误信息。 – sloth
@大师灯XiHuan更正。谢谢你。 –
downvote的原因是什么? –
set()
需要一个迭代器(一个列表或元组是可迭代的)作为它的参数,其中提供了一个整数。
你的设置也只有一个值,所以你只有一件事可以迭代。 random.choice
只返回序列中的单个元素,在这种情况下为int。这不是python错误的原因(因为sneeu说int不是可迭代的),但会导致与你正在寻找的结果不同的结果。 random.sample
可能是一个更好的选择
如果您想要选择从一组随机物品(有固定大小):
list = random.sample(your_set, size);
,或者如果你想选择一个具有任意大小的随机物品:
size = random.randint(0, your_set_size):
list = random.sample(your_set, size):
基于assigment的描述,您不需要用某些东西初始化set。您只应在每个测试中添加set中的元素,并检查set的大小和插入次数。
这就是为什么初始化应该是这样的: 进口随机
room = range(0, 365)
mySet = set()
附:您的代码初始化不正确
您有错误,因为您是从int创建一个set对象。 一组应该从迭代创建(如表)不是一个单一的对象:
所以不是这样: MYSET =设置(R) 你应该这样做: MYSET =设置([R])
为什么不按照作业中的注释?
注 对于每个测试,应使用Random.randint挑0和365之间的一个数 使用表示一个生日
randint()返回而无需创建一个随机整数一个列表,这是你正在使用的功能所需要的:choice()
你应该包括你得到的错误 – joaquin
我回答了你的问题,但我不打算为你做功课。 –
只是fyi它可能不是一个好主意,发布链接到您的任务在未来的TA和教授也使用太...而发布作业的哲学是非常分裂 –