当前位置: 首页 > news >正文

化学元素分子量、氧化物系数计算python类

在网上找到的分子量计算类,做了少量修改,有原子量、分子量、氧化物系数的计算。

import re
wt_dict={ #该原子量数据从CRC手册第95版提取。"H":  1.008,"He":  4.002602,"Li":  6.94,"Be":  9.0121831,"B":  10.81,"C":  12.011,"N":  14.007,"O":  15.999,"F":  18.998403163,"Ne":  20.1797,"Na":  22.98976928,"Mg":  24.305,"Al":  26.9815385,"Si":  28.085,"P":  30.973761998,"S":  32.06,"Cl":  35.45,"Ar":  39.948,"K":  39.0983,"Ca":  40.078,"Sc":  44.955908,"Ti":  47.867,"V":  50.9415,"Cr":  51.9961,"Mn":  54.938044,"Fe":  55.845,"Co":  58.933194,"Ni":  58.6934,"Cu":  63.546,"Zn":  65.38,"Ga":  69.723,"Ge":  72.63,"As":  74.921595,"Se":  78.971,"Br":  79.904,"Kr":  83.798,"Rb":  85.4678,"Sr":  87.62,"Y":  88.90584,"Zr":  91.224,"Nb":  92.90637,"Mo":  95.95,"Ru":  101.07,"Rh":  102.9055,"Pd":  106.42,"Ag":  107.8682,"Cd":  112.414,"In":  114.818,"Sn":  118.71,"Sb":  121.76,"Te":  127.6,"I":  126.90447,"Xe":  131.293,"Cs":  132.90545196,"Ba":  137.327,"La":  138.90547,"Ce":  140.116,"Pr":  140.90766,"Nd":  144.242,"Sm":  150.36,"Eu":  151.964,"Gd":  157.25,"Tb":  158.92535,"Dy":  162.5,"Ho":  164.93033,"Er":  167.259,"Tm":  168.93422,"Yb":  173.054,"Lu":  174.9668,"Hf":  178.49,"Ta":  180.94788,"W":  183.84,"Re":  186.207,"Os":  190.23,"Ir":  192.217,"Pt":  195.084,"Au":  196.966569,"Hg":  200.592,"Tl":  204.38,"Pb":  207.2,"Bi":  208.9804,"Th":  232.0377,"Pa":  231.03588,"U":  238.02891,"Tc":  0,  #有些放射性元素的原子量没有提供,以0表示。"Pm":  0,"Po":  0,"At":  0,"Rn":  0,"Fr":  0,"Ra":  0,"Ac":  0,            "Np":  0,"Pu":  0,"Am":  0,"Cm":  0,"Bk":  0,"Cf":  0,"Es":  0,"Fm":  0,"Md":  0,"No":  0,"Lr":  0,"Rf":  0,"Db":  0,"Sg":  0,"Bh":  0,"Hs":  0,"Mt":  0,"Ds":  0,"Rg":  0,"Cn":  0,"Fl":  0,"Lv":  0}
class Mole():@staticmethod#是否是化学元素def isElement( ele: str) -> bool:if ele in wt_dict.keys():return Trueelse:return False@staticmethod#原子量def AtomicWeight( element: str) -> float:"""根据元素名称返回其原子量,区分大小写的"""if  len(element)>2:  # 元素名称长度不应超过2个字符.return Nonereturn wt_dict.get(element, 0.000)        @staticmethod#分子量def MolWt(formula:str) -> float:regStr="([A-Z]{1}[a-z]{0,1})([0-9]{0,3})"   #解析化学式的正则表达式 MatchList=re.findall(regStr, formula)cntMatchList=len(MatchList)i=0mW=0.000while i < cntMatchList:eleName=MatchList[i][0]eleCount= int(MatchList[i][1]) if len(MatchList[i][1])>0 else 1aw=Mole.AtomicWeight(eleName)if (aw==0): #防止错误表示不能及时识别出来。return 0mW += aw*eleCounti=i+1return mW@staticmethod #氧化物到单质的换算系数def Xishu(formula:str) -> float:regStr="([A-Z]{1}[a-z]{0,1})([0-9]{0,3})"   #解析化学式的正则表达式 MatchList=re.findall(regStr, formula)cntMatchList=len(MatchList)i=0mW=0.000r=[]while i < cntMatchList:eleName=MatchList[i][0]eleCount= int(MatchList[i][1]) if len(MatchList[i][1])>0 else 1r.append((eleName,eleCount))aw=Mole.AtomicWeight(eleName)if aw==0: #防止错误表示不能及时识别出来。return 0# mW += aw*eleCounti=i+1total=0ele_w=1for one in r:(eleName,eleCount)=onewt=Mole.AtomicWeight(eleName)*eleCountif eleName!="O":ele_w=wttotal=total+wtreturn total/ele_w@staticmethod    def letters():#用于元素符号的字母r=[]for k in wt_dict.keys():print(k)for one in k:if one.upper() in r:passelse:r.append(one.upper())return r
if __name__=="__main__":#find which letter not use in elementr=Mole.letters()print(r,len(r))all=[]start=ord("A")stop=ord("Z")a=startwhile a<=stop:all.append(chr(a))a+=1for one in all:if one in r:passelse:print(one)#answer is Q

http://www.lryc.cn/news/461397.html

相关文章:

  • torch.utils.data.DataLoader参数介绍
  • echarts 入门
  • WPF实现类似网易云音乐的菜单切换
  • OpenCV人脸检测与识别:构建智能识别系统
  • H5 Canvas 举牌小人
  • rom定制系列------小米6x_澎湃os1.0.28安卓13定制固件修改 刷写过程与界面预览
  • 电脑硬件性能:HDD + SSD + CPU + GPU
  • 通过粒子系统customData传值给材质球
  • 常用分布的数学期望、方差、特征函数
  • ssh-配置
  • Python 在 JMeter 中如何使用?
  • 贪心day1
  • Redis 完整指南:命令与原理详解
  • 【2024软考高级架构师】论文篇——3、论Web系统的测试技术及其应用
  • 迪杰斯特拉算法的理解
  • 华为OD机试 - 文本统计分析(Python/JS/C/C++ 2024 E卷 200分)
  • 计算机挑战赛9
  • C++学习路线(十六)
  • 2024年最受欢迎的AI工具与实际应用:AI技术对未来生活的深远影响
  • 【网络安全】账户安全随笔
  • 在线培训知识库管理系统:教育行业的新动力
  • 【AI声音克隆本地整合包及教程】第二代GPT-SoVITS V2:声音克隆的新境界
  • 博看书苑 8.8.1| 免费阅读海量图书期刊
  • 导致动态代理无法使用的原因有哪些?
  • 熟练使用Spring Boot、Spring Cloud Alibaba微服务开发框架,并深入理解其原理 学习要求
  • 2024-10-09 问AI: [AI面试题] 描述数据预处理在 AI 中的重要性
  • Linux中文件的理解
  • 益安宁丸,国药准字,值得信赖
  • Django项目的创建及说明(详细图解版)
  • MySQL 9从入门到性能优化-二进制日志