我的类处理整数列表并计算它们,这样它们就不会有重复出现的值。我实现了一个新的方法'intersect',它接受两个intSet对象,并用两个对象列表(vals)中显示的值创建一个新对象。在
最初,我在方法(而不是对象)内创建一个新列表,以添加在两个列表中找到的int,但是我认为创建一个新对象并将值添加到新对象中的val是合适的。但是我得到了错误NameError: global name 'inSet' is not defined
我的代码是:
class intSet(object):
"""An intSet is a set of integers
The value is represented by a list of ints, self.vals.
Each int in the set occurs in self.vals exactly once."""
def __init__(self):
"""Create an empty set of integers"""
self.vals = []
def insert(self, e):
"""Assumes e is an integer and inserts e into self"""
if not e in self.vals:
self.vals.append(e)
def member(self, e):
"""Assumes e is an integer
Returns True if e is in self, and False otherwise"""
return e in self.vals
def remove(self, e):
"""Assumes e is an integer and removes e from self
Raises ValueError if e is not in self"""
try:
self.vals.remove(e)
except:
raise ValueError(str(e) + ' not found')
def __str__(self):
"""Returns a string representation of self"""
self.vals.sort()
return '{' + ','.join([str(e) for e in self.vals]) + '}'
def intersect(self, other):
#intersected = []
intersected = inSet()
for x in self.vals:
if x in other.vals:
#intersected.append(x)
intersected.insert(x)
return intersected
a= {-15,-14,-5,-2,-1,1,3,4,11,18}
b= {-12,-3,3,8,12,16,18,20}
set1 = intSet()
set2 = intSet()
[set1.insert(x) for x in a]
[set2.insert(x) for x in a]
print set1.intersect(set2)
额外的问题是,大部分代码是由管理员为MOOC编写的,6.00.1x。我只需要实现'intersect'方法。为什么在list[]大括号中使用字典目的大括号?在
它是intSet,而不是inSet,您在intersect方法中拼错了它。作为一种习惯,最好用大写字母开始上课(虽然没有固定的规则,但这是一种广泛遵守的习惯)。在
关于大括号,它们不仅适用于词典,也适用于Python集合。因此,通过在str帴方法中使用它们,输出结果表明类的实例确实是一种集合。在
相关问题 更多 >
编程相关推荐