CS1用のPythonプロジェクトで作業しています。私は、私と私の部屋のどちらも分からないという奇妙な問題が出てきました。コードの一般的な範囲は、スペースを埋めるために数字を使用して特定のサイズのシェイプで0のグリッドを塗りつぶすことです。シェイプが存在する場所にシェイプを配置していないことを確認する必要があります。私はここで2つの関数を持っていますが、どちらも事実上同じですが、falsecheckerがリストを返す何らかの理由で、NoneTypeとして返します。なぜこうなった? sCheck == True
がfalseの場合は機能PythonでNoneTypeを返す?
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:一般的な "私は再帰関数を書きましたが、再帰呼び出しの1つから値を返さなかった"正規の複製はありますか? – DSM
ほとんどの状況(これを含む)では 'if sCheck:'は 'if sCheck == True:'よりも優れています。 – abarnert
@abarnert "almost"? '== True'が優先される*状況がありますか? – lvc