私は不公平なセットを表すADTを設計して実装しようとしています。 セットは実際のセットと同じルールに従うADTで、新しいアイテムがセットの後ろに追加され(プッシュ)、古いアイテムがセットの前面から削除されます(ポップ)。ADTを改善するには?
すでにセットに存在する値を追加しようとすると、何も起こりません。これはセットの標準的な期待動作です。ノーマルセットと私が提出する不公平セットとの違いは、大文字をセットにプッシュすると、それがセット内にすでに存在するかどうかにかかわらず追加する必要があるということです。
上位のコンテンツは私が直面している問題です。
私が書くことを試みたコード:
class Set:
class Full(Exception):
pass
class Empty(Exception):
pass
def __init__(self, data=None):
""" Show the set base and the data are inside the dictionary"""
self.data = {} # the dictionary of the set
if data != None:
if len(data) != len(set(data)):
data = set(data)
for d in data:
self.data[d] = d
def add(self, value):
"""This function show how to add value in to the set, if value
in the set, it will return a message and stop the process. Else,
The new value will add into the set"""
if value in self.data.keys():
return 'This word is already in set'
else:
self.data[value] = value # value == key, so it only show the value is store
def remove(self, value):
"""This function is use for removing value from the set,
if the value is not in the set, it will return a message"""
if value not in self.data.keys():
return 'No value found in the set'
self.data.pop(value)
def size(self):
""" Returns the number of values currently stored in the
set """
return len(self.data.keys())
def is_in(self, value):
""" This funiction use for test is the current value save in
teh set, if yes it will return true. Else return false."""
if i in self.data.keys():
return True
else:
return False
def is_in(self, value):
""" This funiction use for test is the current value save in
teh set, if yes it will return true. Else return false."""
if i in self.data.keys():
return True
else:
return False
私はプログラムで実行したい機能:
size
は不公平セットの現在のサイズを返す必要があります。add
は、不公平なセットに特定の文字を追加する必要があります。remove
は、大文字が複数回格納されている場合はそのうちの1つを削除する必要がある場合、不公平なセットから特定の文字を削除する必要があります。is_in
は、指定された文字が現在不正なセットに格納されているかどうかを示す必要があります。
set
またはfrozenset
をpythonライブラリに使用せずに改善するにはどうすればよいですか?
これは以前の質問の繰り返しですが、今削除されていますが、解説を求める複数のコメントがありました。実際に役に立つ情報を追加することによって、それらのコメントに反応したようには見えません。あなたの "不公平なセット"はまだ完全には不明です。以前のコメントに注意して明確にしてください。 –