<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def UserAcceptance( matchList, recursiveLookup = True, promptComment = None, promptOnly = False, xStrOverride = "to skip this selection" ):
 """ Prompt user to select a entry from a given match list or to enter a new string to look up. If the match list is empty user must enter a new string or exit. Parameters matchList : list A list of entries which the user can select a valid match from. recursiveLookup : boolean [optional: default = True] Allow user to enter a new string to look up. promptComment : string [optional: default = None] Add an additional comment on the end of the prompt message. promptOnly : boolean [optional: default = False] Set to true if match list is expected to be empty. In which case the presence of an empty match list will not be mentioned and user will be expected to enter a new response to look up. xStrOverride : string [optional: default = "to skip this selection"] Override the string for 'x' response. This can be used if the behaviour of the 'x' response is changed. Returns string or None Either a entry from matchList, another valid response or a new string to look up. If match list is empty and recursive lookup is disabled or if the user response is 'x' this will return None. """

  matchString = ', '.join(matchList)

  if len(matchList) == 1:
    goodlogging.Log.Info("UTIL", "Match found: {0}".format(matchString))
    prompt = "Enter 'y' to accept this match or e"
  elif len(matchList) > 1:
    goodlogging.Log.Info("UTIL", "Multiple possible matches found: {0}".format(matchString))
    prompt = "Enter correct match from list or e"
  else:
    if promptOnly is False:
      goodlogging.Log.Info("UTIL", "No match found")
    prompt = "E"
    if not recursiveLookup:
      return None

  if recursiveLookup:
    prompt = prompt + "nter a different string to look up or e"

  prompt = prompt + "nter 'x' {0} or enter 'exit' to quit this program".format(xStrOverride)

  if promptComment is None:
    prompt = prompt + ": "
  else:
    prompt = prompt + " ({0}): ".format(promptComment)

  while(1):
    response = goodlogging.Log.Input('UTIL', prompt)

    if response.lower() == 'exit':
      goodlogging.Log.Fatal("UTIL", "Program terminated by user 'exit'")
    if response.lower() == 'x':
      return None
    elif response.lower() == 'y' and len(matchList) == 1:
      return matchList[0]
    elif len(matchList) > 1:
      for match in matchList:
        if response.lower() == match.lower():
          return match
    if recursiveLookup:
      return response