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

如何修正Python代码以计算地球的逃逸速度?

代码错误修正说明

原代码存在多处语法、缩进和逻辑错误,逐一修正如下:

  • 导入语句错误:decimal import * 缺少from,正确写法为from decimal import *
  • 缩进错误:if语句、return None、result = result.sqrt()、return result以及最后print语句的缩进都不符合Python规范,需调整到正确层级
  • 逻辑错误:条件判断写反,原代码中if mass != Decimal('0') or radius != Decimal('0'):的逻辑是“任一不为0则返回None”,完全不符合需求,应改为if mass == Decimal('0') or radius == Decimal('0'):,实现“任一为0则返回None”
  • 括号不匹配:计算result的语句缺少闭合括号,需补充为result = Decimal((2 * GRAVITATIONAL_CONSTANT * mass) / radius)
  • 转义引号错误:print语句中的"是HTML转义字符,需替换为正常的双引号"

修正后的完整代码

from decimal import *

GRAVITATIONAL_CONSTANT = Decimal('6.67384E-11')


# Credit to http://codingwithnumbers.blogspot.com/ for this function
def escape_velocity(mass, radius):
    '''Calculates the delta-V escape velocity.

    Returns delta-V in meters per second for the escape
    velocity for a given object given its mass in kilograms
    and its radius in meters.'''

    #IMPORTANT: mass and radius should be checked to see if they are exactly equal to zero, using the correct comparison operator
    # If either are exactly equal to 0, this function will return None
    if mass == Decimal('0') or radius == Decimal('0'):
        return None

    # Calculate the result using correct formulas
    # NOTE: Syntax errors on one line may mistakenly cause an error to appear on another
    result = Decimal((2 * GRAVITATIONAL_CONSTANT * mass) / radius)
    result = result.sqrt()

    return result


earth_mass_in_kg = Decimal('5.9736E24')
earth_radius_in_meters = Decimal('6371000')

print("The escape velocity of Earth is {} m/s".format(round(escape_velocity(earth_mass_in_kg, earth_radius_in_meters))))

内容的提问来源于stack exchange,提问作者Adrian Heffley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:21:02