Python3.9下DMS转DD函数未运行问题求助(Python新手)
DMS转DD函数的问题修复方案
你的代码存在几个明确问题导致无法正常运行,下面逐一说明并给出修正版本:
问题分析
- 你定义了
d_m_s转换函数,但从未调用它,输入值根本没进入转换逻辑 - 使用
split(',')拆分输入后,参数可能带有空格(比如用户输入12, 34, 56),直接转int会触发ValueError - 函数内部直接打印结果,无法将转换后的值用于后续计算,灵活性不足
修正后的代码
def dms_to_dd(d, m, s): # 先去除字符串两端空格再转数值,秒支持小数 d_int = int(d.strip()) m_int = int(m.strip()) s_float = float(s.strip()) dd = d_int + m_int / 60 + s_float / 3600 return dd # 返回结果而非直接打印 # 获取输入并拆分 user_input = input("Enter degrees, minutes, and seconds: ") d, m, s = user_input.split(',') # 调用函数并输出结果 decimal_degrees = dms_to_dd(d, m, s) print(f"转换后的十进制度数: {decimal_degrees}")
额外优化建议
- 若需处理负数坐标(西经、南纬),直接让用户输入负的度数即可,函数计算逻辑无需修改
- 可添加输入验证,比如检查分、秒是否在合理范围(分≤59,秒≤59.999),避免无效输入报错
内容的提问来源于stack exchange,提问作者Sarukira
相关产品推荐
相关产品推荐

