Python 在文本中使用类的随机实例

Python 在文本中使用类的随机实例,python,random,Python,Random,我是python新手,想写一个简单的文本冒险游戏。玩家进入酒馆并与客人互动。游戏发生在一个幻想的环境中,那里有多个种族。我想随机生成每个客人,然后在酒馆里与他们互动。以下是我的简化代码: import random class guest: def __init__(self,race,name,fav_food): self.race = race self.name = name self.fav_food = fav_food gu

我是python新手,想写一个简单的文本冒险游戏。玩家进入酒馆并与客人互动。游戏发生在一个幻想的环境中,那里有多个种族。我想随机生成每个客人,然后在酒馆里与他们互动。以下是我的简化代码:

import random
class guest:
    def __init__(self,race,name,fav_food):
        self.race = race
        self.name = name
        self.fav_food = fav_food

guest1 = guest('human','Tom','chicken')

print('The first guest you meet is a '+guest1.race+ ' named '+guest1.name+ '. He really likes '+guest.fav_food+ '.')
到目前为止还不错。但在这里我陷入了困境:我希望guest1的数据集从我事先创建的其他来宾中随机选择

guest1 = guest('human','Tom','chicken')
guest1 = guest('dwarf','Bjorn','potatoes')
guest1 = guest('orc','Orok','pork')
guest1 = guest('elf',,'Eli','Salad')
我该怎么做?当然,我可以把它们命名为guest2、guest3等等,但这样就不再是随机的了

当我运行代码时,我想随机遇到Tom、Bjorn、Orok或Eli

我真的很感激在这件事上能得到任何帮助。
对不起,我的英语不好:)

您可以将所有来宾放入一个数组,然后使用
random。选择
将random guest设置为名为
random\u guest
的变量

guests = [guest('human', 'Tom', 'chicken'),
          guest('dwarf', 'Bjorn', 'potatoes'),
          guest('orc', 'Orok', 'pork'),
          guest('elf', 'Eli', 'Salad')]

random_guest = random.choice(guests)
print('The first guest you meet is a '+ random_guest.race + ' named '+ random_guest.name + '. He really likes '+ random_guest.fav_food + '.')
这很好,但有时是随机的。选择不是你想要的

我的意思是,如果你的游戏是对话式的,没问题:你遇到乔治,转到丽塔,然后又是乔治

但是,如果你的游戏暗示你杀了乔治(或者乔治杀了你……游戏结束),那么你就杀了丽塔,如果乔治回来骚扰你,那会很奇怪(除非你的游戏名为僵尸34——酒馆大屠杀)

如果您的用例是第二个,我建议您使用
random.shuffle

characters = [...]
random.shuffle(characters)
以及列表的
.pop
方法

# whenever you need a new character
try:
    a_character = characters.pop()
except IndexError:
    # if you are here, you have exausted your list of characters,
    # you could consider generating a new list and possibly starting a new level

将您的客人放入列表中,然后使用
random.choice()
从列表中随机选择一位。或者将3个属性的值放入列表中,然后使用
guest(random.choice(races)、random.choice(names)、random.choice(fav_food))
在需要时生成一个新的
guest
实例。您可能需要删除
guests
最后一个元素中的多余逗号。这正是我要找的!谢谢你的快速回复。