python - Python def in if True 不返回
问题描述
这段代码,if count >= 3 : print("test")
成功但return True
不起作用..为什么..?!?
def dfs(a, b, i, count):
if a<=-1 or a>=7 or b<=-1 or b>=7:
return False
if lists[a][b] == i and lists[a][b] > 0:
lists[a][b] = -1 #확인 했음을 표시
count += 1;
dfs(a+1, b, i, count)
dfs(a-1, b, i, count)
dfs(a, b+1, i, count)
dfs(a, b-1, i, count)
if count >= 3 :
print("test") #THIS PRINT SUCCESS!!
return True #BUT DON'T return True!!
else:
return False
return False
lists = []
for i in range(7):
lists.append(list(map(int, input().split(" "))))
result = 0
for a in range(0, 7):
for b in range(0, 7):
if dfs(a, b, lists[a][b], 0) == True:
#Never run.. this codes..
print("result up?")
result += 1
print( result )
输入数据是
2 1 5 1 1 3 4
2 1 5 1 3 5 3
2 3 4 5 2 2 4
4 4 3 2 3 1 3
4 3 5 3 1 4 3
5 4 4 3 3 5 5
2 1 3 5 1 1 2
请帮帮我ㅠㅠ..
解决方案
问题在于
dfs(a+1, b, i, count)
dfs(a-1, b, i, count)
dfs(a, b+1, i, count)
dfs(a, b-1, i, count)
如果您将其更改为
print(dfs(a+1, b, i, count))
print(dfs(a-1, b, i, count))
print(dfs(a, b+1, i, count))
print(dfs(a, b-1, i, count))
突然出现“缺失”的返回 true。这里的问题是你没有对实际返回的“True”做任何事情。所以你需要用这个返回值做一些事情,我不确定你在尝试什么,但我希望它回答了关于发生了什么的问题
部分输出
False
False
False
False
test
True
False
False
推荐阅读
- azure-active-directory - 确保新注册成员使用唯一名称
- prolog - 将元素增量添加到变量
- c# - 在使用条件测试后仍会评估空值
- python-3.x - 根据烧瓶中的其他选择选项显示选择字段
- amazon-web-services - 使用dynamoDB流触发理解同步调用的Lambda函数
- python - Python - “追加(列表)”和“追加(列表[:])”有什么不同?
- azure-ad-b2c - 自定义策略中的 Azure B2C MFA 电话因素验证重试处理
- c# - 没有 BeginLifeTimeScope 的 Autofac InstancePerLifeTimeScope
- python - 在 Python 中打印大型 JSON 文件的前几行
- java - 设定火花内的组合