我正在尝试创建一个程序,该程序将使用两组随机整数,并根据这两组整数的结果打印一条语句。但是,当我调用该方法时,我收到“无”或错误消息,指出“超出了最大递归深度”。我似乎无法弄清楚如何在这些方法中构造我的return语句,以使其正常工作。
def genre(a,b):
genreType = random.randint(a,b)
if genreType == '1':
genreType = "Fantasy"
return genre()
elif genreType == '2':
genreType = "Sci-Fi"
return genre()
def medium():
mediumType = random.randint(1,2)
if mediumType == '1':
genre = genre(1,2)
print("Play a " + genre + "game")
return medium()
elif mediumType == '2':
genre = genre(1,2)
print("Watch a " + genre + "anime")
return medium()
答案 0 :(得分:1)
首先,如果函数的分支中没有return
,它将返回None
,例如:
def something():
if False:
return "Thing"
# There is no return in "else"
print(something()) # None
第二,将数字与字符串进行比较永远不会成功:
print(1 == 1) # True
print(1 == '1') # False
因此,您提供的示例只能始终返回None
第三,您没有从函数中返回任何有意义的东西:
def genre(a,b):
genreType = random.randint(a,b)
if genreType == '1':
genreType = "Fantasy"
return genre() # call this function again, but with no parameters, why?!
如果条件有可能成立,那么您将得到
TypeError: genre() missing 2 required positional arguments: 'a' and 'b'
我只能猜测您是要这样做:
if genreType == 1:
genreType = "Fantasy"
return genreType
或者,更短且更具可读性:
def genre(a,b):
genreType = random.randint(a,b)
if genreType == 1:
return "Fantasy"
elif genreType == 2:
return "Sci-Fi"
# And you can add your own error to know what exactly went wrong
else:
raise Exception("Genre bounds must be between 1 and 2")