I'm getting input at run time. If first attempt itself correct input given means I'm not getting the error. Otherwise it is showing can't unpack non-iterable error.
I can see it is sending None if recursive method called once. Even it prints value before return, but after receiving it shows None. 
class Game:
    def set_val(self):
        try:
            p1=input("Enter player 1 name:")
            p2=input("Enter player 2 name:")
            goal=int(input("Enter a number to set goal:"))
            if p1 is None or p2 is None or goal is None:
                print("Please give proper input")
                self.set_val()
            else:
                print(p1,p2,goal)
                return p1,p2,goal
        except:
            print("Please give proper input")
            self.set_val()
G=Game()
p1,p2,goal=G.set_val()
print(p1,p2,goal)
OUTPUT:
Enter player 1 name:s
Enter player 2 name:c
Enter a number to set goal:s
Please give proper input
Enter player 1 name:s
Enter player 2 name:v
Enter a number to set goal:2
s v 2
Traceback (most recent call last):
  File "D:\test.py", line 18, in <module>
    p1,p2,goal=G.set_val()
TypeError: cannot unpack non-iterable NoneType object
I can assume it because of recursive calls, but not able to figure it out why. Please explain give a solution to get all input values without error.
 
     
    