Fix Operation File |2|
~~~~~~~~~~~~~~~~~~~~~~

You need to fix files that have some operations written in them and
return their results.

Write a function named *fix_operation_file* which gets two inputs as
*string*, the input and output file names, respectively. The input file
will be consisting of some basic operations, such that integers and
operators are written line by line instead of a single line. For
example, the operation *3+5* becomes *3*, *+*, *5* and written in 3
lines in the input file (see Sample I/O below). Your function should
read the input file, and write the operations in a fixed form (*3+5* in
this example) to the output file and return the results of these
operations in a list ([8] in this example).

Note that the input file can contain more than 1 operation. You can
assume that the input file will end with a newline character
(\*:raw-latex:`\n*`), and each of the consecutive 3 lines will represent
an operation.

The operators might be basic arithmetic operators as one of ``'+'``,
``'-'``, ``'*'``, ``'/'``.

*Hint:* While reading the input file line by line, you can use the
*rstrip*\ () method to get rid of the newline character ``'\n'``. Also
you might consider using *eval*\ () function for the calculating the
result part.

.. container:: sampleio

   Sample I/O:

.. |2| image:: ../../figures/difficulty_five.png
   :class: difficulty

.. code:: default

   Sample function call:  
     fix_operation_file("input.txt", "output.txt")  

   Content of the file "input.txt":  
     3
     +
     5
     6
     *
     7
     2
     /
     1
     18
     -
     9


   Content of the file "output.txt" after function call:  
     3+5
     6*7
     2/1
     18-9


   Return value:
     [8, 42, 2.0, 9]

.. raw:: html

   <button type="button" class="collapsible" onclick="toggle()">

Show the Answer

.. raw:: html

   </button>

.. raw:: html

   <div class="hiddenanswer">

.. code:: python

   def fix_operation_file(input_file_name, output_file_name):
     operation_results = []

     # Open files in read and write modes, respectively
     input_file = open(input_file_name, "r")
     output_file = open(output_file_name, "w")
     count = 0
     operation_string = ""

     # Read lines from input file
     for line in input_file:
       # Add the number or operator to operation string to save
       # Get rid of the new line character
       operation_string += line.rstrip("\n")

       count += 1

       # If an operation is read completely
       if count == 3:
         output_file.write(operation_string)
         output_file.write("\n")

         # Use eval to evaluate the operation in operation string
         operation_results.append(eval(operation_string))

         # Reset the count and operation string
         count = 0
         operation_string = ""

     # closing the files
     input_file.close()
     output_file.close()

     return operation_results

.. raw:: html

   </div>