我是新来的,还在学习,但我正在做一个随机字符生成器,我不知道如何使它停止或结束代码,并启动一个新的。
import random
Rac = ["Human", "Half-Human", "Not Human"]
Race = random.choice(Rac)
Age = random.randint(1,100)
skil = [“Beserker”,”Mage”,”Assassin”]
Skill = random.choice(skil)
Gende = [“Male”,”Female”]
Gender = random.choice(Gende)
class human:
def __dir__(self):
return[Race,Age,Skill,Gender]
person = human()
print(dir(person))
print(“Race: {}, Age: {}, Class: {}, Gender: {}”.format(Race,Age,Class,Gender))我有两个这样的,但年龄不断打印出相同的,我不知道如何分开他们,所以这是一个不同的年龄,而不是相同的数字,两者。
我需要结束发电机的年龄,因为它干扰并使它成为所有的年龄,而不是随机的年龄。抱歉弄糊涂了。
发布于 2022-08-12 01:30:27
根据我的理解,
首先,我已经更正了代码并删除了语法错误。
(下面给出的代码是而不是一个答案。这只是更新的代码。我已经在下面给出了我的答案。
import random
Rac = ["Human", "Half-Human", "Not Human"]
Race = random.choice(Rac)
Age = random.randint(1,100)
skil = ["Beserker", "Mage", "Assassin"]
Skill = random.choice(skil)
Gende = ["Male", "Female"]
Gender = random.choice(Gende)
class human:
def __dir__(self):
return [Race, Age, Skill, Gender]
person = human()
print(dir(person))
print("Race: {}, Age: {}, Skill: {}, Gender: {}".format(Race, Age, Skill, Gender))我的答案是:
现在,
当您创建随机对象时,这里:Age = random.randint(1,100)只被调用一次,所以只生成一个随机数,并且使用它2次。
,我有两个这样的,但年龄一直打印出相同的,我不知道如何分开他们,我如何分开他们,所以这是一个不同的年龄,而不是相同的数字,两者
您需要的是在类定义中生成这个数字。因此,每次创建该类的对象时都会调用它。
代码:
import random
class human:
def __dir__(self) -> list:
self.Rac = ["Human", "Half-Human", "Not Human"]
self.Race = random.choice(self.Rac)
self.Age = random.randint(1,100)
self.skil = ["Beserker", "Mage", "Assassin"]
self.Skill = random.choice(self.skil)
self.Gende = ["Male", "Female"]
self.Gender = random.choice(self.Gende)
return [self.Race, str(self.Age), self.Skill, self.Gender]
person = human()
print(dir(person))self.Age**)** (注意的str()转换)
现在还有一些其他的知识:
dir()方法在类中调用__dir__方法,__dir__应该返回包含类似数据类型(int或str)项的列表。
这意味着list应该包含所有整数或所有字符串。例如,代码:
class Hello():
def __dir__(self):
return ["1", "2", "3"]
print(dir(Hello()))输出:['1', '2', '3']
如果:
class Hello():
def __dir__(self):
return [1, "2", 3]
print(dir(Hello()))输出:TypeError: '<' not supported between instances of 'str' and 'int'
https://stackoverflow.com/questions/73328216
复制相似问题