AI-based Learning Assistant Python, Java

👤 Sharing: AI
```python
import random

class LearningAssistant:
    def __init__(self, language="Python"):
        """
        Initializes the Learning Assistant.

        Args:
            language (str): The programming language the assistant will focus on.
        """
        self.language = language
        self.topics = {
            "Python": [
                "Variables and Data Types",
                "Operators",
                "Control Flow (if, else, elif)",
                "Loops (for, while)",
                "Functions",
                "Lists",
                "Dictionaries",
                "Tuples",
                "Sets",
                "String Manipulation",
                "File I/O",
                "Object-Oriented Programming (OOP)",
                "Modules and Packages",
                "Exception Handling"
            ],
            "Java": [
                "Variables and Data Types",
                "Operators",
                "Control Flow (if, else, switch)",
                "Loops (for, while, do-while)",
                "Methods",
                "Arrays",
                "Strings",
                "Classes and Objects",
                "Inheritance",
                "Polymorphism",
                "Abstraction",
                "Encapsulation",
                "Interfaces",
                "Exception Handling",
                "Collections Framework"
            ]
        }

        self.questions = {
            "Python": {
                "Variables and Data Types": [
                    "What are the different data types in Python?",
                    "How do you declare a variable in Python?",
                    "Explain the difference between mutable and immutable data types."
                ],
                "Operators": [
                    "What are the different types of operators in Python?",
                    "Explain the precedence of operators.",
                    "How do you use the assignment operator in Python?"
                ],
                "Control Flow (if, else, elif)": [
                    "Explain how the 'if' statement works in Python.",
                    "What is the purpose of the 'else' statement?",
                    "How do you use the 'elif' statement?"
                ],
                "Loops (for, while)": [
                    "Explain the difference between 'for' and 'while' loops.",
                    "How do you iterate over a list using a 'for' loop?",
                    "How do you use the 'break' and 'continue' statements in loops?"
                ],
                "Functions": [
                    "How do you define a function in Python?",
                    "What is the purpose of the 'return' statement?",
                    "Explain the difference between local and global variables."
                ],
                "Lists": [
                    "How do you create a list in Python?",
                    "How do you access elements in a list?",
                    "Explain the different methods available for manipulating lists."
                ],
                 "Dictionaries": [
                    "How do you create a dictionary in Python?",
                    "How do you access values in a dictionary?",
                    "Explain the different methods available for manipulating dictionaries."
                ],
                "Tuples": [
                    "How do you create a tuple in Python?",
                    "What is the difference between lists and tuples?",
                    "Are tuples mutable or immutable?"
                ],
                "Sets": [
                    "How do you create a set in Python?",
                    "What are the characteristics of a set?",
                    "How do you perform set operations like union and intersection?"
                ],
                "String Manipulation":[
                    "How do you concatenate strings in Python?",
                    "Explain different string methods.",
                    "How to slice a string?"
                ],
                "File I/O": [
                    "How do you open a file in Python?",
                    "Explain how to read and write files.",
                    "What are the different file modes available?"
                ],
                "Object-Oriented Programming (OOP)": [
                    "What are the main principles of OOP?",
                    "How do you define a class in Python?",
                    "Explain the concepts of inheritance and polymorphism."
                ],
                "Modules and Packages": [
                    "How do you import a module in Python?",
                    "What is the difference between a module and a package?",
                    "How do you create your own modules?"
                ],
                "Exception Handling": [
                    "What is an exception in Python?",
                    "How do you handle exceptions using 'try' and 'except'?",
                    "Explain how to raise your own exceptions."
                ]
            },

           "Java": {
                "Variables and Data Types": [
                    "What are the primitive data types in Java?",
                    "How do you declare a variable in Java?",
                    "Explain the difference between primitive and reference data types."
                ],
                "Operators": [
                    "What are the different types of operators in Java?",
                    "Explain the precedence of operators.",
                    "How do you use the increment and decrement operators in Java?"
                ],
                "Control Flow (if, else, switch)": [
                    "Explain how the 'if' statement works in Java.",
                    "What is the purpose of the 'else' statement?",
                    "How do you use the 'switch' statement?"
                ],
                "Loops (for, while, do-while)": [
                    "Explain the difference between 'for', 'while', and 'do-while' loops.",
                    "How do you iterate over an array using a 'for' loop?",
                    "How do you use the 'break' and 'continue' statements in loops?"
                ],
                "Methods": [
                    "How do you define a method in Java?",
                    "What is the purpose of the 'return' statement?",
                    "Explain the difference between static and instance methods."
                ],
                "Arrays": [
                    "How do you declare and initialize an array in Java?",
                    "How do you access elements in an array?",
                    "What are the limitations of arrays?"
                ],
                "Strings": [
                    "How do you create a String object in Java?",
                    "Explain the different methods available for manipulating strings.",
                    "What is the difference between String and StringBuilder?"
                ],
                "Classes and Objects": [
                    "What is the difference between a class and an object?",
                    "How do you create an object from a class?",
                    "Explain the concept of object instantiation."
                ],
                "Inheritance": [
                    "What is inheritance in Java?",
                    "How do you implement inheritance using the 'extends' keyword?",
                    "Explain the difference between single and multiple inheritance."
                ],
                "Polymorphism": [
                    "What is polymorphism in Java?",
                    "Explain the difference between method overloading and method overriding.",
                    "How is polymorphism achieved in Java?"
                ],
                "Abstraction": [
                    "What is abstraction in Java?",
                    "How do you achieve abstraction using abstract classes and interfaces?",
                    "What are the benefits of abstraction?"
                ],
                "Encapsulation": [
                    "What is encapsulation in Java?",
                    "How do you achieve encapsulation using access modifiers?",
                    "What are the benefits of encapsulation?"
                ],
                "Interfaces": [
                    "What is an interface in Java?",
                    "How do you define and implement an interface?",
                    "What are the differences between interfaces and abstract classes?"
                ],
                "Exception Handling": [
                    "What is an exception in Java?",
                    "How do you handle exceptions using 'try', 'catch', and 'finally'?",
                    "Explain the different types of exceptions in Java."
                ],
                "Collections Framework": [
                    "What is the Collections Framework in Java?",
                    "Explain the different types of collections in Java (List, Set, Map).",
                    "How do you use the ArrayList, HashSet, and HashMap classes?"
                ]
            }
        }


    def suggest_topic(self):
        """
        Suggests a random topic to learn.
        """
        if self.language in self.topics:
            topic = random.choice(self.topics[self.language])
            print(f"I suggest you learn about: {topic}")
        else:
            print(f"I do not have any topics for the language {self.language}.")

    def ask_question(self, topic=None):
        """
        Asks a question about a specific topic or a random topic if none is specified.

        Args:
            topic (str, optional): The topic to ask a question about. Defaults to None.
        """
        if self.language not in self.questions:
            print(f"I don't have questions for the language: {self.language}")
            return

        if topic is None:
            topic = random.choice(list(self.questions[self.language].keys()))  # Get a random key (topic)

        if topic in self.questions[self.language]:
            question = random.choice(self.questions[self.language][topic])
            print(f"Here's a question about {topic}: {question}")
        else:
            print(f"I don't have any questions about {topic}.")

    def change_language(self, new_language):
        """
        Changes the programming language the assistant is focused on.

        Args:
            new_language (str): The new programming language.
        """
        self.language = new_language
        print(f"Language changed to {self.language}.")

    def help(self):
        """
        Prints a list of available commands.
        """
        print("\nAvailable commands:")
        print("  - suggest_topic: Suggests a topic to learn.")
        print("  - ask_question [topic]: Asks a question about a specific topic (or a random one if no topic is provided).")
        print("  - change_language [language]: Changes the programming language.")
        print("  - help: Shows this help message.")
        print("  - exit: Exits the learning assistant.\n")



if __name__ == "__main__":
    assistant = LearningAssistant()
    print("Welcome to the AI-based Learning Assistant!")
    assistant.help()

    while True:
        command = input("Enter a command: ").lower()

        if command == "suggest_topic":
            assistant.suggest_topic()
        elif command.startswith("ask_question"):
            parts = command.split()
            if len(parts) > 1:
                topic = " ".join(parts[1:]) #handles topics with multiple words
                assistant.ask_question(topic)
            else:
                assistant.ask_question()
        elif command.startswith("change_language"):
            parts = command.split()
            if len(parts) > 1:
                language = parts[1]
                assistant.change_language(language)
            else:
                print("Please specify a language.")
        elif command == "help":
            assistant.help()
        elif command == "exit":
            print("Goodbye!")
            break
        else:
            print("Invalid command. Type 'help' for a list of available commands.")
```
👁️ Viewed: 8

Comments