未定义类全局名称

2024-09-30 22:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个简单的python类,代码如下所示。在

class Solution38:
    def countAndSay(self, n):
        self.n = n
        a[0] = 1
        for t in range(n):
            s = str(a[t])
            l = len(s)
            b = '1'
            c = 0
            f = []
            for d in range(l):
                if s[d] == b:
                    c = c+1
                else:
                    m = str(c)+str(b)
                    b = s[d]
                    c = 1
                    f = f+str(m)
        return f



solution = Solution38()
print solution.countAndSay(4)

当我试图运行它时,它显示“未定义全局名称‘a’”。 另外,当我将a[0]更改为self.a[0]时,另一个错误弹出,说“Solution38实例没有属性‘a’”。在

有人能帮我吗?在

谢谢!在


Tags: 代码inselfforlenreturnifdef
3条回答

有点像

a = 5

创建变量a。有点像

^{pr2}$

使用变量a,因此它必须已经存在。对你来说,它不是

问题是a[0] = 1与{}不同。您可以直接将1分配给名称b,但必须先访问{}的第一个成员,然后才能给它一个新值,因此{}必须存在,然后才能更新。在

self.n = n
for t in n:

这是错误的。我想你想达到的目的是

^{pr2}$

如果我错了请纠正我。在

“Solution38实例没有属性'a'-发生此错误的原因是您将a=[]声明为类变量而不是实例变量。将[0]更改为self.a[0]将无法修复此问题。您需要从一开始就将其声明为self.a={}。 https://docs.python.org/2/reference/compound_stmts.html#class-definitions

“但是另一个错误是'int'ob'is not iterable..n中的't'行:” 在这里,你的错误只是告诉你,你不能循环通过一个整数。你要传递n=4,t怎么会循环通过它呢因为4'里的t没有意义。您应该看看python中的range()函数

for t in range(n):
   :
   :

-我不太确定你到底想做什么,但如果你想找的话,这应该能帮你迭代四次。 https://docs.python.org/2/library/functions.html#range

请仔细阅读这两方面的内容,并看看一些例子!如果您想继续编写代码,它们将非常有用。在

相关问题 更多 >