问题
After making an error then doing recursion i get None.
def getplayerinput():
a = ["rock","paper","scissors"]
plin = raw_input("Choose %s/%s/%s: " %(a[0], a[1], a[2]))
print plin,'-first print'
if plin not in a:
print "Wrong input"
getplayerinput()
else:
print plin,'-second print'
return plin
for i in range(0,11):
print getplayerinput()
If you input first 'rock' then 'cat' then 'paper' you will get a 'None'.
回答1:
You do not return anything once the input is not valid. Do this instead:
def getplayerinput():
a = ["rock","paper","scissors"]
plin = raw_input("Choose %s/%s/%s: " %(a[0], a[1], a[2]))
print plin,'-first print'
if plin not in a:
print "Wrong input"
return getplayerinput() # <- added return
else:
print plin,'-second print'
return plin
for i in range(0,11):
print getplayerinput()
Otherwise the recursion call will return something to a top level call, but that one just swallows the return value from the recursion call, since it doesn't pass it on via return.
来源:https://stackoverflow.com/questions/32793924/function-returns-none