制作一个帽子" python中的代码

时间:2017-11-01 17:02:49

标签: python

我正在编写一个基本上像帽子一样的代码。您添加一个名称,然后随机绘制一个名称并将其打印出来。唯一的问题是我还需要从帽子中删除名称,以便在再次运行时,它不会使用相同的名称。

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()函数将其删除。

2 个答案:

答案 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()