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

如何在函数中存储值并在其他函数中打印/修改?附敌人管理需求

优化后的敌人管理代码方案

嘿,我来帮你把这段代码改得更清爽、更易维护,还能完美实现你的需求——随机生成敌人、查看敌人数量,还预留好后续增减敌人的扩展空间!

先说说原代码里的几个小问题

  • 没必要先定义空列表再赋值随机整数,直接用整数变量就行,比如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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:10:38