<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_mmol(code, mmol_number=None, outfile=None):
 """ Get mmol file from PDBe and return its content as a string. Write to file if outfile given. Parameters code : str PDB code. mmol_number : int mmol number (biological assembly number) of file to download. Numbers from PDBe. If None, defaults to the preferred biological assembly listed for code on the PDBe. outfile : str Filepath. Writes returned value to this file. Returns ------- mmol_string : str, or None Content of the mmol file as a string. None if there are no pdbe files to download, as determined by pdbe_status_code(). None if unable to download the mmol_file from the pdbe site. Raises ------ ValueError If the number of mmols for code is stored in mmols_numbers and if mmol_number is larger than this value. """

    if not mmol_number:
        try:
            mmol_number = preferred_mmol(code=code)
        except (ValueError, TypeError, IOError):
            print("No mmols for {0}".format(code))
            return None
    # sanity check
    if mmols_numbers:
        if code in mmols_numbers.keys():
            num_mmols = mmols_numbers[code][0]
            if mmol_number > num_mmols:
                raise ValueError('There are only {0} mmols for code {1}. mmol_number {2} is too big'
                                 .format(num_mmols, code, mmol_number))
    # Download mmol file from the PDBE webserver.
    pdbe_url = "http://www.ebi.ac.uk/pdbe/entry-files/download/{0}_{1}.mmol".format(code, mmol_number)
    r = requests.get(pdbe_url)
    if r.status_code == 200:
        mmol_string = r.text
    else:
        # Download gz pdb file from the PDB.
        pdb_url = "http://www.rcsb.org/pdb/files/{0}.pdb{1}.gz".format(code.upper(), mmol_number)
        r = requests.get(pdb_url)
        if r.status_code == 200:
            temp_gz = tempfile.NamedTemporaryFile()
            temp_gz.write(r.content)
            with gzip.open(temp_gz.name, 'rb') as foo:
                mmol_string = foo.read().decode()
        else:
            print("Could not download mmol file for {0}.\n Got requests status_code {1}".format(code, r.status_code))
            return None
    # Write to file
    if outfile and mmol_string:
        with open(outfile, 'w') as foo:
            foo.write(mmol_string)

    return mmol_string