Python 计算特定值并将其写入文本文件的循环

Python 计算特定值并将其写入文本文件的循环,python,loops,Python,Loops,我需要一个简单代码的帮助,这个代码将使用一个循环来计算化学计量学和密度。有了这些值,我想把它们放在一个文本文件中。下面是代码 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 =

我需要一个简单代码的帮助,这个代码将使用一个循环来计算化学计量学和密度。有了这些值,我想把它们放在一个文本文件中。下面是代码

  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

等等

open()
中的
'w'
表示写入模式,这将覆盖文件内容。您需要:

  • 在循环之前打开文件
  • 将内容写入循环中
  • 循环结束后关闭文件
  • 最好使用
    with
    语句,以便文件在块之后自动关闭。并避免使用
    文件
    作为变量名,因为它是保留关键字。例如:

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

    注意:
    writelines()
    用于编写多行代码,但在本例中不正确。你应该改用
    write()

    那么是什么阻止了你?围绕你想重复的事情做一个循环
    a+=10
    是该循环的底部。将
    file=open(…)
    file.close()调用移到循环外部。正如现在所写的,每次迭代都会覆盖该文件。