chem_module.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. element_name = ['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds']
  2. element_ar = [1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35.5, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 59, 64, 65, 70, 73, 75, 79, 80, 84, 85, 88, 89, 91, 93, 96, 99, 101, 103, 106, 108, 112, 115, 119, 122, 128, 127, 131, 133, 137, 139, 140, 141, 144, 145, 150, 152, 157, 159, 162.5, 165, 167, 169, 173, 175, 178, 181, 184, 186, 190, 192, 195, 197, 201, 204, 207, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 254, 257, 258, 259, 260, 261, 262, 263, 262, 265, 266, 269]
  3. def group_det(num):
  4. if(num == 1 or num == 3 or num == 11 or num == 19 or num == 29 or num == 37 or num == 47 or num == 55 or num == 79 or num == 87):
  5. return 1
  6. elif(num == 4 or num == 12 or num == 20 or num == 30 or num == 38 or num == 48 or num == 56 or num == 80 or num == 88):
  7. return 2
  8. elif(num == 5 or num == 13 or num == 21 or num == 31 or num == 39 or num == 49 or num == 57 or num == 81 or num == 89):
  9. return 3
  10. elif(num == 6 or num == 14 or num == 22 or num == 32 or num == 40 or num == 50 or num == 72 or num == 82 or num == 104):
  11. return 4
  12. elif(num == 7 or num == 15 or num == 23 or num == 33 or num == 41 or num == 51 or num == 73 or num == 83 or num == 105):
  13. return 5
  14. elif(num == 8 or num == 16 or num == 24 or num == 34 or num == 42 or num == 52 or num == 74 or num == 84 or num == 106):
  15. return 6
  16. elif(num == 9 or num == 17 or num == 25 or num == 35 or num == 43 or num == 53 or num == 75 or num == 85 or num == 107):
  17. return 7
  18. elif(num == 2 or num == 10 or num == 18 or num == 26 or num == 27 or num == 28 or num == 36 or num == 44 or num == 45 or num == 46 or num == 54 or num == 76 or num == 77 or num == 78 or num == 86 or num == 108 or num == 109 or num == 110):
  19. return 8
  20. elif(57 < num < 72):
  21. return 9
  22. elif(89 < num < 104):
  23. return 10
  24. def period_det(num):
  25. if(0 < num < 3):
  26. return 1
  27. elif(2 < num < 11):
  28. return 2
  29. elif(10 < num < 19):
  30. return 3
  31. elif(18 < num < 37):
  32. return 4
  33. elif(36 < num < 55):
  34. return 5
  35. elif(54 < num < 87):
  36. return 6
  37. elif(86 < num < 111):
  38. return 7
  39. def row_det(num):
  40. if(0<num<3):
  41. return 1
  42. elif(3 < num < 11):
  43. return 2
  44. elif(10 < num < 19):
  45. return 3
  46. elif(18 < num < 29):
  47. return 4
  48. elif(28 < num < 37):
  49. return 5
  50. elif(36 < num < 47):
  51. return 6
  52. elif(46 < num < 55):
  53. return 7
  54. elif(54 < num < 79):
  55. return 8
  56. elif(78 < num < 87):
  57. return 9
  58. elif(86 < num < 111):
  59. return 10
  60. def e_formula(group, period, row, num):
  61. if(group == 1 and period == 1):
  62. return '1S[1]'
  63. elif(group == 8 and period == 1):
  64. return '1S[2]'
  65. elif(period == 2):
  66. if(0 < group < 3):
  67. return '2S[' + str(group) + ']'
  68. elif(2 < group < 9):
  69. return '2S[2]2P[' + str(group - 2) + ']'
  70. elif(period == 3):
  71. if(0 < group < 3):
  72. return '3S[' + str(group) + ']'
  73. elif(3 < group < 9):
  74. return '3S[2]3P[' + str(group - 2) + ']'
  75. elif(row == 4 and group != 8):
  76. if(0 < group < 3):
  77. return '4S[' + str(group) + ']'
  78. elif(2 < group < 9):
  79. return '4S[2]3d[' + str(group - 2) + ']'
  80. elif(row == 4 and group == 8):
  81. return '4S[2]3d[' + str(num - 20) + ']'
  82. elif(row == 5):
  83. if(0 < group < 3):
  84. return '4S[2]3d[' + str(group + 8) + ']'
  85. elif(2 < group < 9):
  86. return '4S[2]3d[10]4P[' + str(group - 2) + ']'
  87. elif(row == 6 and group != 8):
  88. if(0 < group < 3):
  89. return '5S[' + str(group) + ']'
  90. elif(2 < group < 9):
  91. return '5S[2]4d[' + str(group - 2) + ']'
  92. elif(row == 6 and group == 8):
  93. return '4S[2]3d[' + str(num - 32) + ']'
  94. elif(row == 7):
  95. if(0 < group < 3):
  96. return '5S[2]4d[' + str(group + 8) + ']'
  97. elif(2 < group < 9):
  98. return '5S[2]4d[10]5P[' + str(group - 2) + ']'
  99. elif(row == 8 and group != 8):
  100. if(0 < group < 3):
  101. return '6S[' + str(group) + ']'
  102. elif(2 < group < 4):
  103. return '6S[2]5d[1]'
  104. elif(group == 9):
  105. return '6S[2]5d[1]4f[' + str(num - 57) + ']'
  106. elif(3 < group < 9):
  107. return '6S[2]5d[' + str(group - 2) + ']4f[14]'
  108. elif(row == 8 and group == 8):
  109. return '6S[2]5d[' + str(num - 70) + ']4f[14]'
  110. elif(row == 9):
  111. if(0 < group < 3):
  112. return '6S[2]5d[' + str(group + 8) + ']4f[14]'
  113. elif(2 < group < 9):
  114. return '6S[2]5d[10]4f[14]6P[' + str(group - 2) + ']'
  115. elif(row == 10 and group != 8):
  116. if(0 < group < 3):
  117. return '7S[' + str(group) + ']'
  118. elif(2 < group < 5):
  119. return '7S[2]6d[' + str(group - 2) + ']'
  120. elif(group == 10):
  121. return '7S[2]6d[1]5f[' + str(num - 89) + ']'
  122. elif(3 < group < 9):
  123. return '7S[2]6d[' + str(group - 2) + ']5f[14]'
  124. elif(row == 10 and group == 8):
  125. return '7S[2]6d[' + str(num - 102) + ']5f[14]'
  126. def chem(num):
  127. name = element_name[num - 1]
  128. N = element_ar[num] - num
  129. group = group_det(num)
  130. period = period_det(num)
  131. row = row_det(num)
  132. e_form = e_formula(group, period, row, num)
  133. if(group == 9):
  134. group = "Это лантаноид"
  135. elif(group == 10):
  136. group = "Это актиноид"
  137. print("\nИмя элемента: " + name)
  138. print("Количество электронов: " + str(num))
  139. print("Количество протонов: " + str(num))
  140. print("Относительная атомная масса: " + str(element_ar[num - 1]))
  141. print("Количество нейтронов: " + str(N))
  142. print("Номер группы: " + str(group))
  143. print("Номер периода: " + str(period))
  144. print("Электронная формула: " + e_form)
  145. input("\nНажмите Enter чтобы выйти...")