Python超级英雄名称生成脚本如何添加B/b输入对应分支逻辑?
超级英雄名称生成程序修改实现
修改说明
- 原有
get_power函数新增B/b输入的合法判定,返回Both作为双能力场景的标识 - 抽离通用年限输入校验逻辑,避免单/双能力场景重复写校验代码
- 新增双能力场景专属处理逻辑,依次询问寒冰、火焰持有时长,取时长更长的能力作为核心名称
- 主流程新增分支判断,双能力场景直接跳转新问题组,跳过原有总年限询问步骤
完整代码
# 能力类型获取模块 def get_power(question): power = input(question).strip() if power.upper() == "H": return "Fire" elif power.upper() == "C": return "Ice" elif power.upper() == "B": return "Both" else: print("输入无效... 请输入 H 代表火焰能力,C 代表寒冰能力,B 代表同时拥有两种能力") return get_power("你的超能力属于火焰、寒冰还是二者皆有?:") # 通用年限输入校验工具 def get_valid_year(question): try: year = int(input(question).strip()) if 1 <= year <= 100: return year else: print("输入无效... 请输入1到100之间的数字") return get_valid_year(question) except ValueError: print("输入无效... 请输入合法数字") return get_valid_year(question) # 年限转名称后缀逻辑 def get_year_suffix(year): return "Lightning" if year % 2 == 0 else "Shadow" # 原有单能力年限处理模块 def get_year(question): year = get_valid_year(question) return get_year_suffix(year) # 新增双能力场景处理模块 def handle_dual_power(): ice_year = get_valid_year("你持有寒冰超能力多少年了?:") fire_year = get_valid_year("你持有火焰超能力多少年了?:") if ice_year > fire_year: core_power = "Ice" suffix = get_year_suffix(ice_year) elif fire_year > ice_year: core_power = "Fire" suffix = get_year_suffix(fire_year) else: # 两种能力持有时长相等时的自定义规则,可按需修改 core_power = "FrostFire" suffix = get_year_suffix(ice_year) return core_power, suffix # 主流程 if __name__ == "__main__": power = get_power("你的超能力属于火焰、寒冰还是二者皆有?:") if power == "Both": core_power, suffix = handle_dual_power() else: core_power = power suffix = get_year("你持有超能力总共有多少年了?:") print(f"恭喜!你的超级英雄名称是:{core_power} {suffix}")
运行规则说明
- 输入H/h:后续询问总持有时长,生成火焰前缀的英雄名
- 输入C/c:后续询问总持有时长,生成寒冰前缀的英雄名
- 输入B/b:跳过总年限询问,依次问寒冰、火焰持有时长,取时长更长的能力作为前缀;时长相等时默认生成冰霜火焰组合前缀
- 所有年限输入仅接受1-100之间的整数,输入非法会触发重新询问
内容的提问来源于stack exchange,提问作者beginner_c0der
相关产品推荐
相关产品推荐

