化学元素分子量、氧化物系数计算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.mzph.cn/pingmian/56350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【入门篇】2.4 map映射文件解析

目录 一,编译产物 1.1 .o 文件(目标文件): 1.2 .hex 文件(十六进制文件) 1.3 .bin 文件(二进制文件) 1.4 .elf 文件(可执行链接格式文件) 1.5 .map 文件(映射文件) 1.6 .lst 文件(列表文件) 二,map文件解析 2.1 程序段交叉引用关系(Section Cross Refe…

Git基础-配置http链接的免密登录

问题描述 当我们在使用 git pull 或者 git push 进行代码拉取或代码提交时&#xff0c; 若我们的远程代码仓库是 http协议的链接时&#xff0c;就是就会提示我们进行账号密码的登录。 每次都要登录&#xff0c;这未免有些麻烦。 本文介绍一下免密登录的配置。解决方案 1 执行…

如何在CSS中修改滚动条样式

修改滚动条样式在CSS中是一个有趣而常见的需求&#xff0c;特别是当你希望网页设计更加个性化时。虽然并不是所有浏览器都完全支持修改滚动条样式&#xff0c;但我们可以使用一些专门的CSS选择器来控制滚动条外观。以下是一个详细讲解&#xff0c;适合整理成博客发布。 如何在C…

软考系统分析师知识点十三:软件需求工程

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间为&#xff1a;11月9日。 倒计时&#xff1a;24天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第一阶段&#xff1a;扫平基础知识点&#xff0c;仅抽取有用信息&am…

FPGA采集adc,IP核用法,AD驱动(上半部分)

未完结&#xff0c;明天补全 IP核&#xff1a;集成的一个现有的模块 串口写好后基本不会再修改串口模块内部的一些逻辑&#xff0c;将串口.v文件添加进来&#xff0c;之后通过他的上层的接口去对他进行使用&#xff0c;所以我们打包IP&#xff0c;之后就不用去添加源文件了&a…

仿 Mac 个人网站开发 |项目复盘

一、前言 1.1 灵感来源 早年有幸看到国外大佬做的一个 基于 Web 的 Windows XP 桌面娱乐系统, 那时刚好有搭建一个个人博客的想法, 所以就想是否可以基于 WEB 实现一个仿 Mac UI 的个人博客, 以应用的形式来展示博客各个功能! 1.2 相关链接(求个 Star) 前端开源代码后端开源…

Linux之实战命令32:chroot应用实例(六十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

【MySQL】入门篇—SQL基础:SQL语言概述

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理和操作关系数据库的标准语言。随着信息技术的快速发展&#xff0c;数据成为企业和组织最重要的资产之一。有效地存储、查询和管理数据对于业务决策和运营至关重要。 SQL作为与关…

Java类与对象的分配机制

在Java中&#xff0c;类和对象是不同的概念。 类是一种数据类型&#xff0c;它定义了对象的行为和属性。类可以包含成员变量和方法。 对象是类的实例&#xff0c;它是在程序运行时根据类创建的。每个对象都有自己独立的内存空间&#xff0c;可以访问类中定义的成员变量和方法…

ali 231普通滑块82y版本

有需求可以联系博主 let v Died_in2021

【含开题报告+文档+PPT+源码】基于人脸识别的课堂考勤系统的设计与实现

开题报告 随着科技的不断发展&#xff0c;人脸识别技术已经逐渐渗透到各个领域&#xff0c;包括教育领域。传统的课堂考勤方式通常依赖于学生签到或教师手动记录&#xff0c;这种方式存在着许多不足之处&#xff0c;例如容易出现人为错误、耗费时间和资源等。为了解决这些问题…

诺贝尔经济学奖历史名单数据集(1969-2024年)

2024年诺贝尔经济学奖授予了达龙阿西莫格鲁&#xff08;Daron Acemoglu&#xff09;、西蒙约翰逊&#xff08;Simon Johnson&#xff09;和詹姆斯A罗宾逊&#xff08;James A. Robinson&#xff09;&#xff0c;以表彰他们在理解制度如何影响经济发展方面的贡献。&#xff08;“…

mysql学习教程,从入门到精通,sql序列使用(45)

sql序列使用 在SQL中&#xff0c;序列&#xff08;Sequence&#xff09;是一种数据库对象&#xff0c;用于生成唯一的数值&#xff0c;通常用于自动递增的主键。不同的数据库管理系统&#xff08;DBMS&#xff09;对序列的支持和语法可能有所不同。以下是一些常见的DBMS&#…

jmeter用csv data set config做参数化

在jmeter中&#xff0c;csv data set config的作用非常强大&#xff0c;用它来做批量测试和参数化非常好用。 csv data set config的常用配置项如下&#xff1a; Variable Names处&#xff0c;写上源文件中的参数名&#xff0c;用于后续接口发送请求时引用 Ignore first line…

泰克MDO3054示波器特性和规格Tektronix MSO3054 500M 四通道

Tektronix MDO3054 示波器&#xff0c;混合域&#xff0c;500 MHz&#xff0c;4 通道&#xff0c;5 GS/s 泰克 MDO3054 混合域示波器是终极 6 合 1 集成示波器&#xff0c;包括可选的集成频谱分析仪、任意函数发生器、逻辑分析仪、协议分析仪和数字电压表/计数器。泰克 MDO305…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

Java算术运算符 C语言的二维数组初始化

1. //算术运算符 public static void main(String[] args) {System.out.println(3.25.01);//若有小数参与&#xff0c;有可能不精确System.out.println(5-1);System.out.println(5*2);System.out.println(10.0/3);//这里不精确System.out.println(10%2);System.out.println();…

2024.10月16日- Vue.js(1)

一 VUE概述与环境搭建 1.1 Vue概述 1.1.1 简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款轻量级的用于构建用户界面的 渐进式的JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高…

「堆」对顶堆 / LeetCode 295(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 LeetCode 295&#xff1a; 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) /…

【代码随想录Day44】动态规划Part12

115.不同的子序列 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划之子序列&#xff0c;为了编辑距离做铺垫 | LeetCode&#xff1a;115.不同的子序列_哔哩哔哩_bilibili class Solution {public int numDistinct(String s, String t) {// 将字符串s和…