這樣做的功課,不明白這將如何工作,所以與步驟的解釋將有很大幫助。 這個問題很難理解,所以一直無法理解和嘗試。 這裏是問題,分爲3個部分。 您被授予以下超類。不要修改這個。蟒蛇工作與類添加連接刪除項目
class Container(object):
""" Holds hashable objects. Objects may occur 0 or more times """
def __init__(self):
""" Creates a new container with no objects in it. I.e., any object
occurs 0 times in self. """
self.vals = {}
def insert(self, e):
""" assumes e is hashable
Increases the number times e occurs in self by 1. """
try:
self.vals[e] += 1
except:
self.vals[e] = 1
def __str__(self):
s = ""
for i in sorted(self.vals.keys()):
if self.vals[i] != 0:
s += str(i)+":"+str(self.vals[i])+"\n"
return s
編寫一個實現以下規範的類。不要重載Container的任何方法。
class Bag(Container):
def remove(self, e):
""" assumes e is hashable
If e occurs one or more times in self, reduces the number of
times it occurs in self by 1. Otherwise does nothing. """
# write code here
def count(self, e):
""" assumes e is hashable
Returns the number of times e occurs in self. """
# write code here
•例如,D1 =袋()
d1.insert(4)
d1.insert(4)
print(d1)
d1.remove(2)
print(d1)
prints 4:2
4:2
•例如,D1 =袋()
d1.insert(4)
d1.insert(4)
d1.insert(4)
print(d1.count(2))
print(d1.count(4))
prints 0
3
第二部分:
寫的方法如果b1和b2是袋子,那麼b1 + b2會給出代表兩個袋子結合的新袋子。
•例如,=袋()
a.insert(4)
a.insert(3)
b = Bag()
b.insert(4)
print(a+b)
prints 3:1
4:2
第三部分:
編寫實現下面規格的類。不要重載Container的任何方法。
class ASet(Container):
def remove(self, e):
"""assumes e is hashable
removes e from self"""
# write code here
def is_in(self, e):
"""assumes e is hashable
returns True if e has been inserted in self and
not subsequently removed, and False otherwise."""
# write code here
•例如,D1 = ASET()
d1.insert(4)
d1.insert(4)
d1.remove(2)
print(d1)
d1.remove(4)
print(d1)
prints 4:2 # from d1.remove(2) print
# (empty) from d1.remove(4) print
• For example, d1 = ASet()
d1.insert(4)
print(d1.is_in(4))
d1.insert(5)
print(d1.is_in(5))
d1.remove(5)
print(d1.is_in(5))
prints True
True
False
謝謝。
更正您的縮進。 – Rahul
這聽起來更像是你的教授或助教的問題 - 你基本上只是拋棄了這裏設置的整個問題。如果你可以把它縮小到某個特定的範圍,並至少表現出解決這個問題的嘗試,那麼它可能就是主題。否則,這太寬泛了。 –
你有沒有得到正確的第三部分? –