Python宝可梦游戏开发:如何将字符串转为对应攻击列表内容
解决方法
你现在的问题是attacks_list只是个字符串,并非实际的攻击列表变量。这里有两种靠谱的解决方式:
方法1:通过全局变量字典获取
Python里全局变量都存在globals()字典中,你可以直接用字符串作为键,取出对应的列表:
squirtle_attacks = ['bubble', 'tailwhip', 'tackle'] active_p = 'squirtle' attacks_list_name = active_p + '_attacks' # 从globals字典中取出实际的攻击列表 actual_attacks = globals()[attacks_list_name] # 把列表转成易读的字符串,还可以给招式名首字母大写 formatted_attacks = ', '.join(attack.capitalize() for attack in actual_attacks) choice = que(f'Choose one: {formatted_attacks}')
运行后就会显示Choose one: Bubble, Tailwhip, Tackle。
方法2:用字典统一管理宝可梦招式(更推荐)
单独定义每个宝可梦的攻击变量容易混乱,用字典把所有宝可梦的招式存起来更规范,也更易维护:
# 用字典存储所有宝可梦的攻击招式 pokemon_attacks = { 'squirtle': ['bubble', 'tailwhip', 'tackle'], 'charmander': ['ember', 'scratch', 'growl'] } active_p = 'squirtle' # 直接通过键获取对应宝可梦的攻击列表 actual_attacks = pokemon_attacks[active_p] formatted_attacks = ', '.join(attack.capitalize() for attack in actual_attacks) choice = que(f'Choose one: {formatted_attacks}')
这种方式后续加新宝可梦招式时,直接在字典里添加键值对就行,不用单独定义新变量,代码结构更清晰。
内容的提问来源于stack exchange,提问作者Maccabi Hollis
相关产品推荐
相关产品推荐

