python 検索エンジン

# データ
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 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 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()