You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决随机角色生成器代码重复及多实例年龄重复问题

角色生成器问题解决方案

修正后的完整代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:24:32