Цикл, который вычисляет конкретные значения и записывает его в текстовый файл - PullRequest
0 голосов
/ 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

  a = 1

  for i in range(20): 
      input = 'density_and_stoich4'
      file = open(input + '.txt', 'w')
      T_C = molm_C*a
      T_com = T_C + molm_U 
      per_C = T_C/T_com
      per_U = molm_U/T_com
      den_com = den_U*per_U + den_C*per_C
      d = a

      file.writelines(str(den_com)+ ';')
      file.writelines(str(d) + '.0\n')
      file.close()

  a += 10

проблема с кодом заключается в том, что он выполняется только один раз. Я хотел бы выполнить его несколько раз и написать в текстовом файле, как показано ниже.

  18.2334;1.0
  17.3437;11.0
  16.3422;21.0

и так далее.

1 Ответ

0 голосов
/ 08 ноября 2019

'w' в open() означает режим записи, который будет перезаписывать содержимое файла. Вам необходимо:

  1. Открыть файл перед циклом
  2. записать содержимое внутри цикла
  3. закрыть файл после цикла

Лучше использовать оператор with, чтобы файл автоматически закрывался после блока. И избегайте использования file в качестве имени переменной, потому что это зарезервированное ключевое слово. Например:

with open(input + '.txt', 'w') as f:
    f.write(str(den_com) + ';' + str(d) + '.0\n')

Примечание: writelines() используется, если вы хотите написать несколько строк, что не соответствует действительности в вашем случае. Вы должны использовать write() вместо

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