标题:类中的变量输出无结果
取消只看楼主
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
结帖率:91.43%
已结贴  问题点数:20 回复次数:1 
类中的变量输出无结果
代码如下,是N皇后问题的解法。
但是在调用printall()函数的时候,类中的变量是空,在初始化时候又能够输出结果。不理解为什么。
程序代码:
class Nqueen(object):
    
    n = -1
    queenlists = [] #空列表 存储总的序列
    queenlist = [] #空列表 存储单个满足条件的序列
    
    def __init__(self, N):#构造函数,初始化执行
        self.n = N
        self.solution(N)

    def solution(self, N): 
        if N == 0:
            print(self.queenlist)
            self.queenlists.append(self.queenlist)
            return 
        for tmp in range(0, self.n):
            if self.check(N, tmp)== True:
                self.queenlist.append(tmp)
                self.solution(N-1)
                self.queenlist.pop(-1)# 出队列,0是第一个,-1是最后一个,默认-1,类似数组下标
                   
    def check(self, N, tail):
        if N == 0:
            print('N:0 %s' %(self.queenlist))
            return True
        for tmp in self.queenlist:#行重复
            if tmp == tail:                              
                return False
        for tmp in range(0, len(self.queenlist)):
            if abs(tmp-len(self.queenlist)) == abs(self.queenlist[tmp]-tail):
                return False
        return True
    
    def printall(self):
        for tmp in self.queenlists:
            print(tmp)
        print(self.queenlists)


Nqueen(8).printall()
#queens = Nqueen(4)
#queens.solution(queens.n)
#queens.printall()


搜索更多相关主题的帖子: if return tmp 类中 solution 
2020-10-14 01:12
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
得分:0 
回复 2楼 fall_bernana
谢谢。
那append就是类似赋给指针的值,copy.deepcopy就是把内容挨个复制进去,是这个意思吗?
2020-10-14 11:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503468-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.626795 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved