我是python3和tring的新手,我创建了一个sqlobject类,它命名为任何东西。然后,我创建了一个函数来计算一列的平均值。这是密码的一部分。
class whatever(sqlobject.SQLObject):
_connection = connection
f1 = sqlobject.FloatCol()
f2 = sqlobject.FloatCol()
wid=sqlobject.IntCol(default=None)
def avg(col, num):
l1 = []
for i in range(1,num):
e = whatever.get(i).col
l1.append(a)
return statistics.mean(l1)
print (avg(f1, 5))但是它返回错误:
Traceback (most recent call last):
File "test1.py", line 58, in <module>
print (avg(f1, 5))
NameError: name 'f1' is not defined但是,当我像这样直接写下代码时:
class whatever(sqlobject.SQLObject):
_connection = connection
f1 = sqlobject.FloatCol()
f2 = sqlobject.FloatCol()
wid=sqlobject.IntCol(default=None)
l1 = []
for i in range(1,5):
e = whatever.get(i).f1
l1.append(e)
print (statistics.mean(l1))效果很好。那么,我应该如何处理def avg(col, num)函数呢?
发布于 2018-04-09 22:39:22
请注意,whatever.get(i).f1可以工作-这是因为您显式地命名了该列。如果要按名称获取列,则必须:
avg('f1', 5);getattr获取列的值。所以固定代码是:
def avg(col, num):
l1 = []
for i in range(1, num):
e = getattr(whatever.get(i), col)
l1.append(a)
return statistics.mean(l1)
print(avg('f1', 5))PS。代码中的下一个错误将是NameError: a。a是什么?你是说e
https://stackoverflow.com/questions/49742284
复制相似问题