# データ
documents = [
"Python is a popular programming language.",
"It is known for its simplicity and readability.",
"Python has a large community of developers.",
"Python is widely used in web development."
]
# データの前処理
def preprocess(text):
return text.lower()
# インデックスの作成
def create_index(documents):
index = {}
for doc_id, doc in enumerate(documents):
doc = preprocess(doc)
words = doc.split()
for word in words:
if word not in index:
index[word] = []
index[word].append(doc_id)
return index
# クエリ処理
def search(query, index):
query = preprocess(query)
words = query.split()
result = set(range(len(documents)))
for word in words:
if word in index:
result &= set(index[word])
return [documents[i] for i in result]
# メイン
if __name__ == "__main__":
index = create_index(documents)
while True:
query = input("検索クエリを入力してください (終了するには 'exit' を入力): ")
if query == 'exit':
break
results = search(query, index)
if results:
for i, result in enumerate(results, start=1):
print(f"{i}. {result}")
else:
print("一致する文書はありません。")
カテゴリー: Python
python todoリスト
import os
# ファイル名
todo_filename = 'todo.txt'
# TODOリストを表示する関数
def show_todo_list():
if os.path.exists(todo_filename):
with open(todo_filename, 'r') as file:
todo_list = file.readlines()
if todo_list:
print("TODOリスト:")
for i, item in enumerate(todo_list, start=1):
print(f"{i}. {item.strip()}")
else:
print("TODOリストは空です。")
else:
print("TODOリストはまだ作成されていません。")
# TODOアイテムを追加する関数
def add_todo_item(item):
with open(todo_filename, 'a') as file:
file.write(item + '\n')
print(f"'{item}' をTODOリストに追加しました。")
# TODOアイテムを削除する関数
def remove_todo_item(item_number):
if os.path.exists(todo_filename):
with open(todo_filename, 'r') as file:
todo_list = file.readlines()
if 1 <= item_number <= len(todo_list):
removed_item = todo_list.pop(item_number - 1).strip()
with open(todo_filename, 'w') as file:
file.writelines(todo_list)
print(f"'{removed_item}' をTODOリストから削除しました。")
else:
print("指定された番号のTODOアイテムは存在しません。")
else:
print("TODOリストはまだ作成されていません。")
# メインメニューを表示する関数
def main_menu():
while True:
print("\nメニュー:")
print("1. TODOリストを表示")
print("2. TODOアイテムを追加")
print("3. TODOアイテムを削除")
print("4. 終了")
choice = input("選択してください: ")
if choice == '1':
show_todo_list()
elif choice == '2':
item = input("追加するTODOアイテムを入力してください: ")
add_todo_item(item)
elif choice == '3':
show_todo_list()
item_number = int(input("削除するTODOアイテムの番号を入力してください: "))
remove_todo_item(item_number)
elif choice == '4':
print("アプリケーションを終了します。")
break
else:
print("無効な選択です。再度選択してください。")
if __name__ == "__main__":
main_menu()
python メソッドのオーバーライド
class Post: # 親クラス Superクラス
def init(self, text):
self._text = text
self._likes = 0
def show(self):
print(f"{self._text} - {self._likes}")
def like(self):
self._likes += 1
class SponsoredPost(Post): # 子クラス Subクラス
def init(self, text, sponsor):
# self._text = text
# self._likes = 0
super().init(text)
self._sponsor = sponsor
def show(self):
print(f"{self._text} - {self._likes} sponsored by {self._sponsor}")
posts = [
Post(“Hello”),
Post(“Hi”),
SponsoredPost(“Hey”, “dotinstall”),
]
posts[2].like()
for post in posts:
post.show()
python クラスの継承
class Post: # 親クラス Superクラス
def init(self, text):
self._text = text
self._likes = 0
def show(self):
print(f"{self._text} - {self._likes}")
def like(self):
self._likes += 1
class SponsoredPost(Post): # 子クラス Subクラス
pass
posts = [
Post(“Hello”),
Post(“Hi”),
SponsoredPost(“Hey”),
]
for post in posts:
post.show()
python メソッドの定義
class Post:
_count = 0
def init(self, text):
self._text = text
self._likes = 0
Post._count += 1
@classmethod
def show_count(cls):
print(f"{cls._count} instances created")
def show(self):
print(f"{self._text} - {self._likes}")
def like(self):
self._likes += 1
posts = [
Post(“Hello”),
Post(“Hi”),
]
for post in posts:
post.show()
Post.show_count()
python @property
class Post:
def init(self, text):
self._text = text
self._likes = 0
def show(self):
print(f"{self._text} - {self._likes}")
def like(self):
self._likes += 1
@property
def likes(self):
return self._likes
posts = [
Post(“Hello”),
Post(“Hi”),
]
posts[0].likes = 100
print(posts[0].likes)
python setter、getter
class Post:
def init(self, text):
self._text = text
self._likes = 0
def show(self):
print(f"{self._text} - {self._likes}")
def like(self):
self._likes += 1
def set_likes(self, num):
self._likes = num
def get_likes(self):
return self._likes
posts = [
Post(“Hello”),
Post(“Hi”),
]
posts[0]._likes = 100
print(posts[0]._likes)
posts[0].set_likes(100)
print(posts[0].get_likes())
for post in posts:
post.show()
python 属性へのアクセス
class Post:
def init(self, text):
self.text = text
self._likes = 0
def show(self):
print(f"{self.text} - {self._likes}")
def like(self):
self._likes += 1
posts = [
Post(“Hello”),
Post(“Hi”),
]
posts[0]._likes += 1
posts[0].like()
for post in posts:
post.show()
python いいね機能
class Post:
def init(self, text):
self.text = text
self.likes = 0
def show(self):
print(f"{self.text} - {self.likes}")
def like(self):
self.likes += 1
posts = [
Post(“Hello”),
Post(“Hi”),
]
posts[0].likes += 1
posts[0].like()
for post in posts:
post.show()
python クラス
class Post:
def init(self, text, likes):
self.text = text
self.likes = likes
def show(post):
print(f”{post[‘text’]} – {post[‘likes’]}”)
posts = [
Post(“Hello”,3),
Post(“Hi”, 5),
]
print(posts[0].text)
print(posts[0].likes)
print(posts[1].text)
print(posts[1].likes)
