素材牛VIP会员
Python 一段代码遇到问题
 lo***ou  分类:Python  人气:899  回帖:1  发布于6年前 收藏
def check_connection(network,name1,name2):
    network = list(network)
    name = name1
    for a in network:
        if name in a and name2 in a:
            print 'yes'
            return True
    for a in network:
        if name in a:
            name = a.replace(name1,'').replace('-','')
            network.remove(a)
            check_connection(network,name,name2)
    return False

print check_connection(("dr101-mr99", "mr99-out00", "dr101-out00", "scout1-scout2","scout3-scout1", "scout1-scout4", "scout4-sscout", "sscout-super"),"super", "scout2")

输出:

yes
False

明明 return True 了,为什么最后的结果是 False ?
麻烦大家了,我是一名Python自学者,还不太会提问题,请见谅!

解决了:

def check_connection(network,name1,name2):
    network = list(network)
    for a in network:
        if name1 in a and name2 in a:
            return True
    for a in network:
        if name1 in a:
            name1 = a.replace(name1,'').replace('-','')
            network.remove(a)
            return check_connection(network,name1,name2) 
    return False

提示:递归函数,return 只是跳出递归函数

 标签:python

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv1 新人
陈***1 学生 6年前#1
def check_connection(network,name1,name2):
    network = list(network)
    for a in network:
        if name1 in a and name2 in a:
            return True
    for a in network:
        if name1 in a:
            name1 = a.replace(name1,'').replace('-','')
            network.remove(a)
            return check_connection(network,name1,name2) 
    return False

递归函数

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取