Lavorando su un progetto Python per CS1, e sono arrivato attraverso uno strano problema che né io né il mio coinquilino possiamo immaginare. Lo scopo generale del codice è quello di riempire una griglia di 0 con forme di una certa dimensione usando i numeri per riempire lo spazio, e dobbiamo controllare lungo la strada per assicurarci di non mettere le forme nei luoghi in cui ci sono già delle forme. Ho due funzioni qui, entrambe fanno praticamente la stessa cosa, ma per qualsiasi ragione, quando falsechecker restituisce la lista, la restituisce come NoneType. Perché sta succedendo?Funzione Restituzione di un NoneType in Python?
def falseChecker(binList, r, c, size):
sCheck = isSpaceFree(binList, r, c, size)
if sCheck == True:
for x in range(c, c+size):
for y in range(r, r+size):
binList[x][y] = size
return binList
else:
c += 1
if c > len(binList):
c = 0
r += 1
if r > len(binList):
return binList
falseChecker(binList, r, c, size)
def iChecker(binList, blockList):
r = 0
c = 0
for i in blockList:
check = isSpaceFree(binList, r, c, i)
if check == True:
for x in range(c, c+i):
for y in range(r, r+i):
binList[x][y] = i
c += 1
if c > len(binList):
c = 0
r += 1
if r > len(binList):
return binList
else:
binList = falseChecker(binList, r, c, i)
return binList
main()
@Everybody: Esiste un duplicato canonico per il comune "Ho scritto una funzione ricorsiva ma non ho restituito il valore da una delle chiamate ricorsive" domanda? – DSM
Come nota a margine, 'se sCheck:' è migliore di 'se sCheck == True:' in quasi tutte le situazioni (inclusa questa). – abarnert
@abarnert "quasi"? Esiste * qualsiasi * situazione in cui è preferibile '== True'? – lvc