<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def findFile(self, fname, numtype):
 """ Function that finds the associated file for fname when Fname is time or NDump. Parameters fname : string The name of the file we are looking for. numType : string Designates how this function acts and how it interprets fname. If numType is 'file', this function will get the desired attribute from that file. If numType is 'cycNum', this function will get the desired attribute from that file with fname's model number. """

        numType=numtype.upper()
        if numType == 'FILE':
                #do nothing
            return fname
        elif numType == 'CYCNUM':
            try:
                fname = int(fname)
            except ValueError:
                print('Improper choice:'+ str(fname))
                print('Reselecting as 0')
                fname = 0
                print('Using '+self.files[fname])
        try:
            return self.files[self.indexp_cyc2filels[fname]]
        except IndexError:
            mods = array(self.get('mod'), dtype=int)
            if fname not in mods:
                print('You seem to try to plot a cycle that is not present: '+str(fname))
                fname = mods[-1]
                print('I will assume you want to plot the last cycle in the run: '+str(fname))
                print('[I am not 100% sure this escape is debugged. You better do this again with')
                print('the correct input.]')
                return self.files[fname]