title: Can't convert 'NoneType' object to str implicitly
body: <p>So I am currently creating a simple rock paper scissors game and i have hit a small snag, I have made a function for the users choice and i only allow them to select the three valid option for the game. However I experience a weird issue whenever they select something not allowed. This is my function,</p>
  
  <pre><code>def userChoice():
  
    choice = input("Rock (R), Paper (P), Scissors (S)? ")
  
    if choice.upper() == 'R' or choice.lower() == 'rock':
      choice = 'Rock'
      return choice
  
    elif choice.upper() == 'P' or choice.lower() == 'paper':
      choice = 'Paper'
      return choice
  
    elif choice.upper() == 'S' or choice.lower() == 'scissors':
      choice = 'Scissors'
      return choice
  
    else:
      print("This was an invalid option, please try again.")
      userChoice()
  
  
  user = userChoice()
  print("Your choice is: " + user)
  </code></pre>
  
  <p>The problem I am having is that when the user picks something they shouldn't for example 'L' it displays the error message and restarts the function allowing them to pick again. However when they pick the next time (a correct value) I get the following error. </p>
  
  <p>"Traceback (most recent call last):
    File "python", line 23, in 
  TypeError: Can't convert 'NoneType' object to str implicitly"</p>
  
  <p>And i know if you do not return a value to a function it returns the default value of 'None' which is the Type error that I am having. However what I do not understand is why the second time it is running after the first incorrect value when i put a correct one in it still takes the value 'None' instead of the new correct value I assign? </p>
  
  <p>Any help on why this occurs and how I can fix it?</p>
  
  <p>Thanks, </p>
  
  <p>Liam</p>