Python求助,错了2个地方,17行和12行为啥呢
本帖最后由 拨Q 于 2021-1-18 11:18 编辑scores =
class Aa:
list = []
#print(type(len(scores)))
def me(self):
a = sum(scores)/len(scores)
print(a)
for i in scores:
#print(type(i))
if i < a:
list.add(i)
else:
pass
print(list)
b = Aa()
b.me()
我的想法就是把上边的分数算出平均分a,然后遍历scores,低于平均分的加入到空列表list里,打印出低于平均分的数。
错了2个地方,17行和12行为啥呢 12行应该是append吧,不是add python添加元素到列表中应该是append方法不是add方法 本帖最后由 xiaosuobjsd 于 2021-1-18 11:18 编辑
12行:
list没有add方法,只有append方法
17行:
17行本身的使用没错,但是整段代码有另一个错误,class里的list是类变量,传递到def里会变成一个内存地址,而不是具体的内容。所以list.append(i)依然会报错,如果想改正的话,需要把list变成全局变量就可以传递内容了 看来知识没有掌握牢:
Python中 append|extend|insert|add 区别
append(seq)
将对象作为一个整体,添加到列表末尾,添加后列表仅增加1个元素。该对象可以是任意数据类型,函数没有返回值。
a =
b = ['mac', 'linux']
a.append(b)
a
-- > ]
extend(seq)
将一个可迭代对象中的所有元素(N个),逐个添加到列表末尾,添加后列表元素增加N个;
通常,可迭代对象为list;为字符串时把每个字符逐个添加到列表末尾;为字典时,将字典的key添加到列表末尾。函数没有返回值。
a =
b = ['mac', 'python']
c = 'linux'
a.extend(b)
a
-- >
a.extend(c)
a
-- >
insert(index, obj)
将对象作为一个整体,添加到列表的指定位置,添加后列表仅增加1个元素,方法类似append();
特别地,在列表最后添加元素时,index为len(object),index为-1时插入到倒数第二的位置,并非末尾。
a =
b = 'python'
a.insert(1, b)
a
-- >
add(element)
将对象作为一个整体,为集合(set)添加元素,若添加的元素已在集合中,则不执行任何操作
a = {"python", "mac"}
b = "linux"
a.add(b)
a
-- > {'linux', 'mac', 'python'}
作者:惑也
链接:https://www.jianshu.com/p/61df283d78f8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 scores =
class Aa:
abc = 123
def __init__(self, scores):
self.list = []
self.scores = scores
def me(self):
a= sum(self.scores)/len(self.scores)
print(a)
for i in self.scores:
if i<a:
self.list.append(i)
else:
pass
print(self.list)
b = Aa(scores)
b.me()
看下python的类变量 答疑解惑也~ 还有一个问题:list是Python关键字,尽量不要用Python关键字作为变量名
页:
[1]