모듈:몰 질량
Module| 이 모듈은 알파 등급입니다.타사 입력에 사용할 준비가 되어 있으며, 문제가 발생하는지 확인하기 위해 몇 페이지에서 사용할 수 있지만 지켜봐야 합니다.새로운 기능에 대한 제안이나 입력 및 출력 메커니즘의 변경을 환영합니다. |
이 모듈은 간단한 화학식을 사용하여 몰 질량(몰당 그램)을 계산합니다.
사용.
내보낸 함수:
mm(frame)몰 질량을 반환합니다(몰당 그램 단위).
사용:
mw.frameargs[1] = 화학식
예
| 예 | 위키 코드 | 결과 |
|---|---|---|
| C0.5•1.5H2O | {{#선택사항:몰 질량 mm C0.5•1.5H2O}} | 33.02827 |
| 모 | {{#선택사항:몰 질량 mm Mo} | 95.94 |
| H2SO4 | {{#선택사항:몰 질량 mm H2SO4}} | 98.07948 |
| 공백이 허용되지만 원자 기호 또는 숫자를 구분할 수 없음 | {{#선택사항:몰 질량 mm H 2 SO 4} | 98.07948 |
| {{#선택사항:몰질량mmC4H10} | 49.05074 | |
| 잘못됨: {{#invoke:몰 질량 mm Ca O}} | 38행의 Lua 오류: 'a O'로 시작하는 수식에 잘못된 문자가 있습니다. | |
| Si(OH)4 | {{#선택사항:몰질량mm Si(OH)4}} | 96.11486 |
| H(C(OH)22H | {{#선택사항:몰질량mm H(C(OH)2)2H}} | 94.06664 |
| CuSO4·HO2[1] | {{#선택사항:몰 질량 mm CuSO4•H2O} | 159.6096 |
| CuSO4•5H2O[1][2] | {{#선택사항:몰질량mm CuSO4•5H2O} | 249.686 |
| {{#선택사항:몰질량mm CuSO4(H2O)5}} | 249.686 | |
| HO0.5 | {{#선택사항:몰 질량 mm HO0.5}} | 9.00764 |
| 오류: 알 수 없는 요소 기호 | {{#선택사항:몰 질량 mm ZxPo4}} | 라인 49의 Lua 오류: 알 수 없는 요소: Zx. |
| 오류: 불균형 괄호 | {{#선택사항:몰질량mm((Na)Cl)} | 64행의 Lua 오류: ((Na)Cl에 '(')이 너무 많습니다. |
| {{#선택사항:몰질량mm Si(OH)4}} | 53번 라인의 Lua 오류: Si(OH)4의 너무 많은 '"). | |
| 오류: 인식할 수 없는 문자입니다. | {{#선택사항:몰질량mm Si(OH)4q)} | 38행의 Lua 오류: 'q'로 시작하는 수식에 잘못된 문자가 있습니다. |
| 선행 번호가[2] 무시됨 | {{#선택사항:몰 질량 mm H}} | 1.00794 |
| {{#선택사항:몰 질량 mm 2H} | 2.01588 | |
| 오류: 알 수 없는 브래킷[3] 유형 | {{#선택사항:몰질량mm2[AlCl3]}} | 38행의 Lua 오류: '[AlCl3]'로 시작하는 수식에 잘못된 문자가 있습니다. |
| 오류: 형식이 지정되지 않은 텍스트만 허용합니다. | {{#선택사항:몰 질량 mm H <sub>2 </sub>O}} | 38행의 Lua 오류: '<sub>2</sub>O'로 시작하는 수식에 잘못된 문자가 있습니다. |
참고 사항 및 참조 사항
간단한 화학식에서 몰 질량을 계산합니다. H2O, NH3, CuSO4, Si(OH)4, 2H2O와 같은 -- 현지의 c = {} 모듈의 테이블 현지의 암 = { 원자 질량 표(.svg에서 추출) H=1.00794; 그=4.002602; 리=6.941; 있다=9.012182; B=10.811; C=12.0107; N=14.00674; O=15.9994; F=18.9984032; 네=20.1797; 나=22.98976928; Mg=24.3050; 알=26.9815386; 시=28.0855; P=30.973762; S=32.066; 클=35.4527; 아르=39.948; K=39.0983; Ca=40.078; 문장 부호=44.955912; 티=47.867; V=50.9415; 크르=51.9961; Mn=54.938045; 페=55.845; 코=58.933195; 니=58.6934; CU=63.546; Zn=65.39; 가=69.723; 게=72.61; ~하듯이=74.92160; 세=78.96; 브르=79.904; 크르=83.80; Rb=85.4678; Sr=87.62; Y=88.90585; Zr=91.224; Nb=92.90638; 모=95.94; Tc=97.9072; 루=101.07; Rh=102.90550; PD=106.42; 아그=107.8682; Cd=112.411; 인=114.818; Sn=118.710; 누군가=121.760; 테=127.60; I=126.90447; 제=131.29; Cs=132.9054519; 바=137.327; Hf=178.49; 타=180.94788; W=183.84; 리=186.207; 오스=190.23; 어=192.217; Pt=195.084; 아우=196.966569; Hg=200.59; 틸=204.3833; PB=207.2; 비=208.98040; 포=208.9824; 에서=209.9871; Rn=222.0176; 라=138.90547; Ce=140.116; 프루=140.90765; Nd=144.242; PM=144.9127; SM=150.36; 에우=151.964; Gd=157.25; TB=158.92535; 다이=162.500; 호=164.93032; 음.정말=167.259; Tm=168.93421; Yb=173.04; 루=174.967; Fr=223.0197; 라=226.0254; Rf=263.1125; DB=262.1144; Sg=266.1219; Bh=264.1247; Hs=269.1341; Mt=268.1388; Ds=272.1463; Rg=272.1535; Cn=277.0; 응=284.0; FL=289.0; 맥=288.0; Lv=292.0; Ts=292.0; 오그=294.0; 아크=227.0277; Th=232.03806; 파=231.03588; U=238.02891; Np=237.0482; 푸=244.0642; 암=243.0614; cm=247.0703; BK=247.0703; Cf=251.0796; 에=252.0830; Fm=257.0951; Md=258.0984; 아니요.=259.1011; Lr=262.110; } 현지의 T_ELEM = 0 토큰 유형 현지의 T_Num = 1 현지의 T_O = 2 '()'를 엽니다. 현지의 T_C = 3 닫힘 '" 현지의 T_MIDDOT = 4 수화 구분 기호 현지의 T_SPACE = 5 여백 현지의 T_WATER = 6 결정화수 '•xH2O' 기능. 항목(f) (반복기) 공식 'f'에서 토큰(유형, 값)을 한 번에 하나씩 반환합니다. 현지의 i = 1 돌아가다 기능. () 현지의 t, x = 영의, 영의 한다면 i <= f:렌() 그리고나서 x = f:경기('^%u%l*', i); t = T_ELEM; 일치하는 요소(C, O, Ba, Na, ...) 한다면 것은 아니다. x 그리고나서 x = f:경기('^[%d.]+', i); t = T_Num; 끝. 일치하는 번호 한다면 것은 아니다. x 그리고나서 x = f:경기('^%(', i); t = T_O; 끝. 일치 '(') 한다면 것은 아니다. x 그리고나서 x = f:경기('^%)', i); t = T_C; 끝. 일치 '") 한다면 것은 아니다. x 그리고나서 x = f:경기('^•[%d.]*H2O', i); t = T_WATER; 끝. 일치하는 '•xH2O' x 숫자, 선택 사항 한다면 것은 아니다. x 그리고나서 x = f:경기('^•', i); t = T_MIDDOT; 끝. 일치하는 '•' 한다면 것은 아니다. x 그리고나서 x = f:경기('^%s+', i); t = T_SPACE; 끝. 일치하는 공백 한다면 x 그리고나서 i = i + x:렌(); 또 다른 오류("'로 시작하는 수식에 잘못된 문자가 있습니다."..f:후보선수(i).."'") 끝. 끝. 돌아가다 t, x 끝. 끝. 기능. c.음.(틀) 공식 'f'의 몰 질량 현지의 f = 틀.논병아리[1] 현지의 합, 커 = {0}, {0} '()'을(를) 처리할 스택; 'cur'가 곱셈될 때까지(또는 그렇지 않을 때까지) 기다립니다. 현지의 t, x 위해서 t, x 에 항목(f) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 t == T_ELEM 그리고나서 주장하다(암[x], "알 수 없는 요소: "..x) 합[#합] = 합[#합] + 커[#커]; 커[#커] = 암[x] 그렇지 않으면 t == T_Num 그리고나서 합[#합] = 합[#합] + 커[#커] * 수에 달하여(x); 커[#커] = 0 그렇지 않으면 t == T_O 그리고나서 합[#합] = 합[#합] + 커[#커]; 커[#커] = 0;합[#합+1] = 0; 커[#커+1] = 0 밀다 그렇지 않으면 t == T_C 그리고나서 한다면 #합 < 2 그리고나서 오류("너무 많아요."..f) 끝. 합[#합] = 합[#합] + 커[#커]; 커[#커-1] = 합[#합]; 합[#합], 커[#커] = 영의, 영의 팝 그렇지 않으면 t == T_WATER 그리고나서 한다면 string.match(x, '•%d+') 그리고나서 합[#합] = 합[#합] + ((2*암.H + 암.O) * 수에 달하여(string.match(x, '[%d.]+'))) 또 다른 sum[#sum] = sum[#sum] + (2*am).H + am.O) 끝. 그렇지 않으면 t == T_MIDDOT 그리고나서 오류("수화 구문(•)이 아직 지원되지 않음") 그렇지 않으면 t ~= T_SPACE 그리고나서 오류('???') 끝. 공백을 무시 끝. 한다면 #합 > 1 그리고나서 오류("(')'이 너무 많음"..f) 끝. 선행 번호 확인(2XyZ) 한다면 string.match(f, '^[%d.]+') 그리고나서 돌아가다 (합[1] + 커[1]) * 수에 달하여(string.match(f, '^[%d.]+')) 또 다른 돌아가다 합[1] + 커[1] 끝. 끝. --[테스트 ------------------- c.frame = {} c.frame.args = {} 함수 pm(f) c.frame.args[1] = f print('..f..'의 몰 질량은 '..c.mm (c.frame)) 끝. pm("NaCl") pm("NaOH") pm("CaCO3") pm("H2SO4") pm("C10H8") pm("CO2") pm("Mo") pm("HCl") pm("Si(OH)4") pm("CuSO4(H20)5") --------------- --]] 돌아가다 c 내보내기 c.mm 내보내기