如何解决随机角色生成器代码重复及多实例年龄重复问题
角色生成器问题解决方案
修正后的完整代码
import random class Character: def __init__(self): # 每次创建角色时生成独立的随机属性 self.race = random.choice(["Human", "Half-Human", "Not Human"]) self.age = random.randint(1, 100) self.skill = random.choice(["Beserker","Mage","Assassin"]) self.gender = random.choice(["Male","Female"]) def display_info(self): print(f"Race: {self.race}, Age: {self.age}, Class: {self.skill}, Gender: {self.gender}") # 循环生成角色的流程 while True: # 生成新角色并展示信息 new_character = Character() new_character.display_info() # 询问是否继续生成 user_choice = input("是否生成新角色?(输入y继续,其他键退出): ").strip().lower() if user_choice != 'y': break
问题拆解解决
1. 解决角色年龄重复的问题
原代码核心问题是全局变量复用:Race、Age等变量定义在类外部,只会初始化一次,复制代码后不会重新生成随机值,导致所有角色共享同一组属性。
修正方式:
- 将属性生成逻辑移到类的
__init__方法中,每次实例化Character类时,都会重新执行随机生成逻辑。 - 使用实例变量(
self.race、self.age)存储每个角色的专属属性,不同角色对象的属性完全独立,不会互相干扰。
2. 实现结束当前流程并生成新角色
通过while True无限循环控制流程:
- 每次循环都会创建一个全新的
Character对象,生成新角色。 - 循环末尾通过用户输入判断是否继续:如果用户输入不是'y',就用
break跳出循环,结束当前流程;否则继续生成下一个角色。
内容的提问来源于stack exchange,提问作者Non ye
相关产品推荐
相关产品推荐

