我正在编写一个基本上像帽子一样的代码。您添加一个名称,然后随机绘制一个名称并将其打印出来。唯一的问题是我还需要从帽子中删除名称,以便在再次运行时,它不会使用相同的名称。
import random
class Hat:
def __init__(self):
self.names = []
def __repr__(self):
return str(self.name)
def insert_name(self, name):
if name not in self.names:
self.names.append(name)
else:
return
def draw_name(self):
return random.choice(self.names)
hat = Hat()
hat.insert_name("Joe")
hat.insert_name("Jeff")
hat.insert_name("Andrew")
hat.insert_name("Shelby")
print hat.draw_name()
起初我试过
return self.names.remove(random.choice(self.names))
但是那将返回无。
我想知道的是,是否有任何方法可以查看random.choice选择了什么,然后使用list.remove()函数将其删除。
答案 0 :(得分:2)
你必须简单地使用一个变量和三行代码:
def draw_name(self):
name = random.choice(self.names)
self.names.remove(name)
return name
答案 1 :(得分:0)
试试这个。您需要在返回值
之前从帽子中删除随机名称import random
class Hat:
def __init__(self):
self.names = []
def __repr__(self):
return str(self.name)
def insert_name(self, name):
if name not in self.names:
self.names.append(name)
else:
return
def draw_name(self):
drawname=random.choice(self.names)
#changed here
self.names.remove(drawname)
return drawname
hat = Hat()
hat.insert_name("Joe")
hat.insert_name("Jeff")
hat.insert_name("Andrew")
hat.insert_name("Shelby")
print hat.draw_name()