打开主菜单
首页
随机
最近更改
特殊页面
社群首页
参数设置
关于CatoPedia
免责声明
CatoPedia
搜索
用户菜单
创建账号
登录
查看“相对分子质量计算器”的源代码
←
相对分子质量计算器
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<nowiki>#</nowiki> A dictionary of some common elements and their relative atomic masses elements = {"H": 1.008, "He": 4.003, "Li": 6.941, "Be": 9.012, "B": 10.81, "C": 12.01, "N": 14.01, "O": 16.00, "F": 19.00, "Ne": 20.18, "Na": 22.99, "Mg": 24.31, "Al": 26.98, "Si": 28.09, "P": 30.97, "S": 32.07, "Cl": 35.45, "Ar": 39.95, "K": 39.10 , "Ca" :40.08 , 'Sc':44.96 , 'Ti':47.87 , 'V':50.94 , 'Cr':52.00 , 'Mn':54.94 , 'Fe':55.85 , 'Co':58.93 , 'Ni':58.69 , 'Cu':63.55 , 'Zn':65.38 , 'Ga':69.72 , 'Ge':72.63 , 'As':74.92 , 'Se':78.97 , 'Br':79.90 , 'Kr' :83.80 , 'Rb' :85.47 ,'Sr' :87.62,'Y' :88.91,'Zr':91.22, 'Nb' :92.91,'Mo' :95.95,'Tc' :98 ,'Ru' :101.07, 'Rh' :102.91,'Pd' :106.42,'Ag' :107.87,'Cd' :112.41, 'In' :114.82,'Sn' :118.71,'Sb' :121.76,'Te' :127.60, 'I':126.90,'Xe':131.29,'Cs':132.91,'Ba':137.33, 'Hf':178.49,'Ta':180.95,'W':183.84, 'Ir':192.22,'Pt':195.08,'Au':196.97, 'Pb':207.2,'Bi':208.98} <nowiki>#</nowiki> A function to calculate the relative molecular mass of a chemical formula def calculate_rmm(formula): # Initialize the result to zero result = 0 # Initialize an empty string to store the current element symbol element = "" # Initialize an empty string to store the current number of atoms number = "" # Initialize an empty list to store the stack of parentheses stack = [] # Loop through each character in the formula for char in formula: # If the character is an uppercase letter if char.isupper(): # If there is a previous element symbol if element: # If there is a previous number of atoms if number: # Convert the number to an integer and multiply it by the relative atomic mass of the element value = int(number) * elements[element] else: # Otherwise assume the number is one and multiply it by the relative atomic mass of the element value = elements[element] # If there is a stack of parentheses if stack: # Append the value to the stack stack.append(value) else: # Otherwise add it to the result result += value # Reset the number to an empty string number = "" # Set the current element symbol to the character element = char # If the character is a lowercase letter elif char.islower(): # Append it to the current element symbol element += char elif char.isdigit(): number += char elif char == "(": if element: if number: value = int(number) * elements[element] else: value = elements[element] if stack: stack.append(value) else: result += value element = "" number = "" stack.append(char) elif char == ")": if element: if number: value = int(number) * elements[element] else: value = elements[element] if stack: stack.append(value) else: result += value element = "" number = "" # Pop the values from the stack until reaching a left parenthesis temp_result = 0 while stack and stack[-1] != "(": temp_result += stack.pop() # Pop the left parenthesis from the stack if stack and stack[-1] == "(": stack.pop() # Check if there is a number after the right parenthesis i = formula.index(char) + 1 if i < len(formula) and formula[i].isdigit(): # Multiply the temporary result by the number and append it to the stack or add it to the result temp_result *= int(formula[i]) if stack: stack.append(temp_result) else: result += temp_result # Skip the next character as it is already processed continue else: # Otherwise append the temporary result to the stack or add it to the result as it is if stack: stack.append(temp_result) else: result += temp_result # Check if there is a remaining element and number at the end of the formula and add them to the result if element: if number: value = int(number) * elements[element] else: value = elements[element] result += value return result <nowiki>#</nowiki> Ask for user input and print out the result or error message def main(): while True: try: formula = input("Enter a chemical formula: ") rmm = calculate_rmm(formula) print("The relative molecular mass of {} is {:.3f}".format(formula,rmm)) except KeyError as e: print("Unknown element: {}".format(e)) except ValueError as e: print(e) if __name__ == "__main__": main()
返回至“
相对分子质量计算器
”。