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.