面试题答案
一键面试def calculate_damage(attack_power: int, skill_multiplier: float = 1.0, target_defense: int = 0, is_critical: bool = False) -> float:
if is_critical:
skill_multiplier = 2.0
damage = (attack_power * skill_multiplier) - target_defense
if damage < 0:
damage = 0
return damage
优化思路:
- 参数类型指定:明确参数
attack_power
和target_defense
为整数类型,skill_multiplier
为浮点数类型,is_critical
为布尔类型,这样在函数调用时可以利用类型检查提高运行效率,并且在一些强类型语言中可避免类型转换带来的开销。 - 减少重复计算:将暴击时对
skill_multiplier
的修改放在函数开头,只进行一次判断和修改,而不是在每次计算伤害时都去判断是否暴击,从而减少不必要的计算。 - 避免负伤害:在计算完伤害后,通过一次判断将负伤害置零,避免在其他地方多次检查伤害是否为负,提升代码简洁性与效率。