我创建了一个简单的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]
时,会弹出另一个错误,并说明"解决方案38实例没有属性' a'"。
任何人都可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:2)
像
这样的东西a = 5
创建变量a
。像
a[0]
使用变量a
,因此它必须已存在。在你的情况下,它没有。
答案 1 :(得分:1)
问题在于a[0] = 1
与b = 1
不同。您可以直接将1
分配给名称b
,但在为其提供新值之前必须访问a
的第一个成员,因此在更新之前必须存在a
。
self.n = n
for t in n:
这是错误的。我想你想要实现的是
for t in range(n):
如果我错了,请告诉我。
答案 2 :(得分:1)
"解决方案38实例没有属性' a'" - 发生此错误是因为您将= []声明为类变量而不是实例变量。稍后将[0]更改为self.a [0]将无法解决此问题。您需要从一开始就将其声明为self.a = {}。 https://docs.python.org/2/reference/compound_stmts.html#class-definitions
"但另一个错误是' int' ob不可迭代..,对于n中的t,'" 在这里,您的错误只是告诉您无法遍历单个int。你传递n = 4,怎么会循环呢? '对于4'没有意义。你应该看一下python中的range()函数
for t in range(n):
:
:
- 我不太确定你在这里想要做什么,但这应该有助于你迭代四次,如果这是你正在寻找的。 https://docs.python.org/2/library/functions.html#range
阅读本文并查看一些示例!如果您想继续编码,它们将非常有用。
答案 3 :(得分:0)
在a
中使用a=[]
之前,您应该先调用a[0]=1
来初始化a[0]
,因为a
会尝试从可迭代def countAndSay(self, n):
self.n = n
a = [1]
for t in n:
s = str(a[t])
l = len(s)
b = '1'
c = 0
f = []
for d in 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
中获取第0个元素。然而,建议用一个元素初始化它:
public function prodcercanos()
{
$cercanos = User::with('municipio')->with('productos')->get();
$coordA = Geotools::coordinate([44.4578589, 2.2951061999999998]);
foreach ($cercanos as $p) {
$coordB = Geotools::coordinate([$p->municipio->latitud,$p->municipio->longitud]);
$distance = Geotools::distance()->setFrom($coordA)->setTo($coordB);
echo $p->id;
echo "<p>";
echo $distance->in('km')->haversine();
echo "</p>";
}
}