использование и последовательность в цикле для вычисления значений - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужна помощь с кодом, который я написал для расчета плотности с использованием стехиометрии. При каждом выполнении он создает уникальный текстовый файл и записывает стехиометрию, соответствующую плотности, в каждом уникальном текстовом файле. Так что, как только он выполняется в первый раз, «stoich» изменится на 2, затем на 4 и так далее. Каждый текстовый файл, который он записывает, будет иметь различные значения «stoich» с вычисленной плотностью.

  den_U = 19.1 #density of uranium 238 g/cc
  den_C = 2.26 #density of carbon 12 g/cc

  molm_U = 238.02 #molar mass of Uranium g/mol
  molm_C = 12.0107 #molar mass of Carbon g/mol

  stoich = [1,2,4,10,100,200,500,1000,2500,3000,4000]


  for i in stoich:
      input = 'density_stoichiometry_'+str(d)+'_'
      file = open(input + '.txt', 'w')

      T_C = molm_C*stoich # calculates total mass of carbon 
      T_com = T_C + molm_U # calculates total mass of chemical compound
      per_C = T_C/T_com # calculates percent of carbon in compound
      per_U = molm_U/T_com #calculates the percent of uranium in compound
      den_com = den_U*per_U + den_C*per_C # calculates the total density 
      d = stoich

      file.write('density='+str(den_com)+ '\n')  
      file.write('stoichiometry=' +str(d)+ '\n')
      file.close()

      stoich = 1

Код дает мне ошибку в 'T_C = molm_C * stoich', говоря, что я не могу умножить последовательность на не-int типа 'float'. Я предполагаю, что у меня будет та же самая проблема в 'd = stoich'. Если кто-то может помочь, я был бы признателен.

1 Ответ

1 голос
/ 08 ноября 2019

Следующие работы:

den_U = 19.1 #density of uranium 238 g/cc
den_C = 2.26 #density of carbon 12 g/cc

molm_U = 238.02 #molar mass of Uranium g/mol
molm_C = 12.0107 #molar mass of Carbon g/mol

stoich = [1,2,4,10,100,200,500,1000,2500,3000,4000]


for i in stoich:
  fname = 'density_stoichiometry_'+str(i)+'_.txt'
  file = open(fname, 'w')

  T_C = molm_C*i # calculates total mass of carbon 
  T_com = T_C + molm_U # calculates total mass of chemical compound
  per_C = T_C/T_com # calculates percent of carbon in compound
  per_U = molm_U/T_com #calculates the percent of uranium in compound
  den_com = den_U*per_U + den_C*per_C # calculates the total density 

  file.write('density='+str(den_com)+ '\n')  
  file.write('stoichiometry=' +str(i)+ '\n')
  file.close()

Я использовал i вместо stoich в теле цикла, избавился от бессмысленного d и заменил input (названиевстроенной функции) с fname. Я также объединил определение fname в одну строку, так как оно снижает читабельность, разделяя его определение на две строки (часть его определения встроена в вызов функции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...