Python定义读取原子质量文本为字典的函数代码问题排查
实现方案
你的代码存在几处语法和逻辑错误,修正后即可实现读取元素原子质量表、返回可查询字典的需求。
原代码存在的问题
- 函数定义未设置文件路径入参,调用时传入的文件路径无法被函数接收
- 调用
open函数时错用方括号[],函数调用必须使用圆括号() - 文件路径字符串未闭合,
"average_mass.csv缺少结尾的双引号 for循环内的代码未正确缩进,不符合Python语法规则- 原子质量读取后为字符串类型,未转为浮点数,后续无法直接参与数值计算
return语句写在for循环内部,仅会读取第一行内容就终止执行,且返回单个值而非完整字典- 未处理每行末尾的换行符,解析出的质量值会携带多余空白字符
修正后的完整代码
def read_masses(file_path): atom_masses = {} with open(file_path, "r", encoding="utf-8") as f: for line in f: # 清除每行首尾的换行、空格等空白字符 clean_line = line.strip() # 跳过文件中的空行,避免解析报错 if not clean_line: continue # 按逗号分割得到元素符号和原子质量 element, mass_str = clean_line.split(",") # 将质量转为浮点数存入字典 atom_masses[element] = float(mass_str) # 所有行解析完成后返回完整字典 return atom_masses # 调用函数加载质量表 m = read_masses("average_mass.csv") # 查询氮元素的原子质量 print(m["N"])
使用说明
- 确保
average_mass.csv文件和Python脚本在同一目录下,若文件在其他位置,传入完整路径即可 - 调用函数后得到的
m是完整的元素质量字典,直接通过m["元素符号"]的格式即可查询对应原子质量,比如m["He"]就能得到氦的原子质量4.0026 - 代码自动跳过文件中的空行,兼容文件末尾有空行的常见情况
内容的提问来源于stack exchange,提问作者eLBe
相关产品推荐
相关产品推荐

