如何在函数中存储值并在其他函数中打印/修改?附敌人管理需求
优化后的敌人管理代码方案
嘿,我来帮你把这段代码改得更清爽、更易维护,还能完美实现你的需求——随机生成敌人、查看敌人数量,还预留好后续增减敌人的扩展空间!
先说说原代码里的几个小问题
- 没必要先定义空列表再赋值随机整数,直接用整数变量就行,比如
zombies = random.randrange(0,15)就够 fillEnemyField没有返回值,没法把生成的敌人数据传递给其他函数使用printEnemyField里的输入逻辑太混乱了,重复多次输入,还没正确处理用户选择的循环
重构后的代码
import random def generate_enemies(): """随机生成各类敌人的数量,返回存储敌人的字典""" enemy_types = { "zombies": random.randrange(0, 15), "trolls": random.randrange(0, 15), "vampires": random.randrange(0, 15), "ghosts": random.randrange(0, 15) } print("已生成新的敌人阵容!") return enemy_types def print_enemy_details(enemies): """打印所有敌人的数量信息""" enemy_str = "你拥有" for enemy, count in enemies.items(): enemy_str += f"{count}个{enemy}、" # 去掉最后一个多余的顿号 print(enemy_str.rstrip("、")) def adjust_enemy_count(enemies): """预留的敌人数量增减功能,后续可完善逻辑""" print("\n===== 调整敌人数量 =====") enemy_name = input("请输入要调整的敌人类型(如zombies):").lower() if enemy_name not in enemies: print("不存在该类型敌人!") return try: change = int(input("请输入增减数量(正数增加,负数减少):")) # 确保数量不会变成负数 enemies[enemy_name] = max(0, enemies[enemy_name] + change) print(f"{enemy_name}数量已调整为{enemies[enemy_name]}") except ValueError: print("请输入有效的数字!") def main_menu(): """主菜单逻辑,处理用户交互""" enemies = generate_enemies() while True: print("\n===== 敌人管理菜单 =====") print("1. 查看当前所有敌人数量") print("2. 生成新的随机敌人阵容") print("3. 调整敌人数量") print("5. 退出程序") try: choice = int(input("请输入你的选择:")) if choice == 1: print_enemy_details(enemies) elif choice == 2: enemies = generate_enemies() elif choice == 3: adjust_enemy_count(enemies) elif choice == 5: print("程序已退出") break else: print("无效选择,请输入1/2/3/5!") except ValueError: print("请输入有效的数字!") # 启动程序 if __name__ == "__main__": main_menu()
代码亮点说明
- 用**字典
enemy_types**存储敌人,后续要加新敌人(比如werewolves),直接在字典里加一行就行,扩展性拉满 - 每个函数只做一件事:
generate_enemies负责生成、print_enemy_details负责打印、adjust_enemy_count负责调整,逻辑清晰,好维护 - 主菜单
main_menu处理所有交互,循环直到用户选择退出,输入错误时会给出友好提示 - 已经预留了
adjust_enemy_count函数,你可以直接完善里面的逻辑,比如增加选择敌人类型的列表提示,不用大改整体结构
后续扩展建议
如果想让用户按数字选择具体敌人查看(比如按1看zombies,按2看trolls),可以在菜单里加一个选项,然后写个函数处理单个敌人的查询,比如:
def print_single_enemy(enemies): print("\n===== 查看单个敌人 =====") enemy_list = list(enemies.keys()) for idx, enemy in enumerate(enemy_list, 1): print(f"{idx}. {enemy}") try: choice = int(input("请输入要查看的敌人序号:")) if 1 <= choice <= len(enemy_list): selected_enemy = enemy_list[choice-1] print(f"你拥有{enemies[selected_enemy]}个{selected_enemy}") else: print("无效序号!") except ValueError: print("请输入有效的数字!")
然后在主菜单里加个选项4调用这个函数就行~
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

