首先,抱歉我的英语不好。 我有一个问题,我的函数在执行两次以上时返回一个NoneType错误
def random(k, position, impossible):
"""Permet de générer des case où il n'y a pas encore de navires placé
et qui soit possible (éviter que le bateau soit sur deux lignes),
l'argument k correspond au navire en cours de placement
"""
global cases_occupées_bot
case = randint(0,99)
print("Salut !", k, position, case, impossible)
if k == 0: #porte-avion (5 cases)
if (position == 0 and
len(set((case, case)).intersection(set(impossible))) == 0 and
len(set((case, case+1, case+2, case+3, case+4)).intersection(
set(cases_occupées_bot))) == 0):
cases_occupées_bot.extend([case, case+1, case+2, case+3, case+4])
return case
elif (position == 1 and
len(set((case, case)).intersection(set(impossible))) == 0 and
len(set((case, case+10, case+20, case+30,case+40)).intersection(
set(cases_occupées_bot))) == 0):
cases_occupées_bot.extend([case, case+10, case+20, case+30, case+40])
return case
else:
random(k, position, impossible)
为了测试这个功能我使用:
random(0,0,[9,19,29,39,49,59,69,79,89,99,8,18,28,38,48,58,68,78,88,98,7,17,27,37,47,57,67,77,87,97,6,16,26,36,46,56,66,76,86,96])
我想知道它来自哪里,先谢谢你的帮助!
答案 0 :(得分:1)
您需要在最后一行返回递归调用的结果。
return random(k,position,impossible)