-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_content.py
More file actions
187 lines (165 loc) · 12.6 KB
/
Copy pathgenerate_content.py
File metadata and controls
187 lines (165 loc) · 12.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
import json
import os
def create_notebook(path, cells):
nb = {
"cells": cells,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
with open(path, 'w', encoding='utf-8') as f:
json.dump(nb, f, ensure_ascii=False, indent=1)
def md_cell(text):
return {
"cell_type": "markdown",
"metadata": {},
"source": [text]
}
def code_cell(code):
return {
"cell_type": "code",
"execution_count": None,
"metadata": {},
"outputs": [],
"source": [code]
}
# 1. Exercises & Solutions for 01-06
ex_01 = [
md_cell("# Ασκήσεις: Εισαγωγή & Βασικές Έννοιες"),
md_cell("### Άσκηση 1\nΔημιουργήστε τρεις μεταβλητές: το όνομά σας, την ηλικία σας και το αγαπημένο σας χρώμα. Στη συνέχεια, τυπώστε ένα μήνυμα που να τα συνδυάζει."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n"),
md_cell("### Άσκηση 2\nΥπολογίστε το εμβαδόν ενός ορθογωνίου με μήκος 5 και πλάτος 3.5."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("01_Python_Basics/Exercises.ipynb", ex_01)
sol_01 = [
md_cell("# Λύσεις: Εισαγωγή & Βασικές Έννοιες"),
md_cell("### Λύση Άσκησης 1"),
code_cell("name = 'Αλέξανδρος'\nage = 25\ncolor = 'Μπλε'\nprint(f'Με λένε {name}, είμαι {age} χρονών και το αγαπημένο μου χρώμα είναι το {color}.')"),
md_cell("### Λύση Άσκησης 2"),
code_cell("length = 5\nwidth = 3.5\narea = length * width\nprint('Το εμβαδόν είναι:', area)")
]
create_notebook("01_Python_Basics/Solutions.ipynb", sol_01)
ex_02 = [
md_cell("# Ασκήσεις: Δομές Δεδομένων"),
md_cell("### Άσκηση 1\nΦτιάξτε μια λίστα με 5 αγαπημένα σας φαγητά. Προσθέστε ένα ακόμα στο τέλος της λίστας και τυπώστε το 3ο στοιχείο."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n"),
md_cell("### Άσκηση 2\nΔημιουργήστε ένα λεξικό με τα στοιχεία ενός βιβλίου (τίτλος, συγγραφέας, έτος έκδοσης)."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("02_Data_Structures/Exercises.ipynb", ex_02)
sol_02 = [
md_cell("# Λύσεις: Δομές Δεδομένων"),
md_cell("### Λύση Άσκησης 1"),
code_cell("foods = ['Πίτσα', 'Σουβλάκι', 'Μακαρονάδα', 'Σαλάτα', 'Μπέργκερ']\nfoods.append('Γύρος')\nprint(foods[2])"),
md_cell("### Λύση Άσκησης 2"),
code_cell("book = {\n 'title': 'Το 1984',\n 'author': 'George Orwell',\n 'year': 1949\n}\nprint(book)")
]
create_notebook("02_Data_Structures/Solutions.ipynb", sol_02)
ex_03 = [
md_cell("# Ασκήσεις: Δομές Ελέγχου"),
md_cell("### Άσκηση 1\nΦτιάξτε ένα πρόγραμμα που ελέγχει αν ένας αριθμός x είναι θετικός, αρνητικός ή μηδέν."),
code_cell("x = 5\n# Γράψτε τον κώδικά σας εδώ\n"),
md_cell("### Άσκηση 2\nΤυπώστε όλους τους ζυγούς αριθμούς από το 1 μέχρι το 20 χρησιμοποιώντας μια for loop."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("03_Control_Flow/Exercises.ipynb", ex_03)
sol_03 = [
md_cell("# Λύσεις: Δομές Ελέγχου"),
md_cell("### Λύση Άσκησης 1"),
code_cell("x = 5\nif x > 0:\n print('Θετικός')\nelif x < 0:\n print('Αρνητικός')\nelse:\n print('Μηδέν')"),
md_cell("### Λύση Άσκησης 2"),
code_cell("for i in range(2, 21, 2):\n print(i)")
]
create_notebook("03_Control_Flow/Solutions.ipynb", sol_03)
ex_04 = [
md_cell("# Ασκήσεις: Συναρτήσεις"),
md_cell("### Άσκηση 1\nΓράψτε μια συνάρτηση `is_even(n)` που να επιστρέφει True αν ο n είναι ζυγός, αλλιώς False."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n"),
md_cell("### Άσκηση 2\nΧρησιμοποιήστε μια lambda συνάρτηση για να υπολογίσετε το τετράγωνο ενός αριθμού."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("04_Functions/Exercises.ipynb", ex_04)
sol_04 = [
md_cell("# Λύσεις: Συναρτήσεις"),
md_cell("### Λύση Άσκησης 1"),
code_cell("def is_even(n):\n return n % 2 == 0\n\nprint(is_even(4))\nprint(is_even(7))"),
md_cell("### Λύση Άσκησης 2"),
code_cell("square = lambda x: x ** 2\nprint(square(5))")
]
create_notebook("04_Functions/Solutions.ipynb", sol_04)
ex_05 = [
md_cell("# Ασκήσεις: Αντικειμενοστραφής Προγραμματισμός"),
md_cell("### Άσκηση 1\nΔημιουργήστε μια κλάση `Car` με ιδιότητες `brand` και `color`. Φτιάξτε μια μέθοδο `start_engine` που να τυπώνει 'Ο κινητήρας ξεκίνησε!'."),
code_cell("# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("05_Object_Oriented_Programming/Exercises.ipynb", ex_05)
sol_05 = [
md_cell("# Λύσεις: Αντικειμενοστραφής Προγραμματισμός"),
md_cell("### Λύση Άσκησης 1"),
code_cell("class Car:\n def __init__(self, brand, color):\n self.brand = brand\n self.color = color\n \n def start_engine(self):\n print(f'Ο κινητήρας του {self.color} {self.brand} ξεκίνησε!')\n\nmy_car = Car('Toyota', 'Μαύρο')\nmy_car.start_engine()")
]
create_notebook("05_Object_Oriented_Programming/Solutions.ipynb", sol_05)
ex_06 = [
md_cell("# Ασκήσεις: Εισαγωγή στο Data Science"),
md_cell("### Άσκηση 1\nΔημιουργήστε ένα NumPy array με τους αριθμούς 1 έως 10 και υπολογίστε το άθροισμά τους."),
code_cell("import numpy as np\n# Γράψτε τον κώδικά σας εδώ\n"),
md_cell("### Άσκηση 2\nΦτιάξτε ένα Pandas DataFrame με δεδομένα από 3 μαθητές (Όνομα, Βαθμός) και βρείτε το μέσο όρο της βαθμολογίας."),
code_cell("import pandas as pd\n# Γράψτε τον κώδικά σας εδώ\n")
]
create_notebook("06_Intro_to_Data_Science/Exercises.ipynb", ex_06)
sol_06 = [
md_cell("# Λύσεις: Εισαγωγή στο Data Science"),
md_cell("### Λύση Άσκησης 1"),
code_cell("import numpy as np\narr = np.arange(1, 11)\nprint('Άθροισμα:', arr.sum())"),
md_cell("### Λύση Άσκησης 2"),
code_cell("import pandas as pd\n\ndata = {'Όνομα': ['Άννα', 'Γιώργος', 'Μαρία'], 'Βαθμός': [8, 9, 10]}\ndf = pd.DataFrame(data)\nprint('Μέσος όρος:', df['Βαθμός'].mean())")
]
create_notebook("06_Intro_to_Data_Science/Solutions.ipynb", sol_06)
# 2. New Modules
mod_07 = [
md_cell("# Μάθημα 7: Διαχείριση Αρχείων (File Handling)"),
md_cell("Στην Python μπορούμε πολύ εύκολα να διαβάσουμε και να γράψουμε σε αρχεία. Χρησιμοποιούμε τη συνάρτηση `open()`."),
code_cell("# Γράψιμο σε αρχείο\nwith open('test.txt', 'w', encoding='utf-8') as file:\n file.write('Γεια σου κόσμε!\\nΑυτή είναι μια δοκιμή.')"),
code_cell("# Διάβασμα από αρχείο\nwith open('test.txt', 'r', encoding='utf-8') as file:\n content = file.read()\n print(content)")
]
create_notebook("07_File_Handling/07_file_handling.ipynb", mod_07)
mod_08 = [
md_cell("# Μάθημα 8: Διαχείριση Σφαλμάτων (Error Handling)"),
md_cell("Τι γίνεται όταν προκύπτει ένα λάθος; Αντί να 'κρασάρει' το πρόγραμμα, μπορούμε να το πιάσουμε με τις λέξεις-κλειδιά `try` και `except`."),
code_cell("try:\n # Προσπαθούμε να διαιρέσουμε με το 0 (Που απαγορεύεται)\n result = 10 / 0\nexcept ZeroDivisionError:\n print('Σφάλμα: Δεν μπορείς να διαιρέσεις με το μηδέν!')\nfinally:\n print('Αυτό εκτελείται πάντα στο τέλος.')")
]
create_notebook("08_Error_Handling/08_error_handling.ipynb", mod_08)
mod_09 = [
md_cell("# Μάθημα 9: Modules & Packages"),
md_cell("Η Python έχει χιλιάδες έτοιμες βιβλιοθήκες. Για να τις χρησιμοποιήσουμε, κάνουμε `import`."),
code_cell("import math\n\n# Χρήση του pi και της τετραγωνικής ρίζας\nprint('Το Pi είναι περίπου:', math.pi)\nprint('Η ρίζα του 16 είναι:', math.sqrt(16))"),
md_cell("Επίσης, μπορούμε να εγκαταστήσουμε εξωτερικές βιβλιοθήκες με το εργαλείο `pip` στο τερματικό:\n\n`pip install requests`")
]
create_notebook("09_Modules_and_Packages/09_modules.ipynb", mod_09)
# 3. Projects
proj_1 = [
md_cell("# Project 1: Guess the Number"),
md_cell("Φτιάξτε ένα παιχνίδι όπου ο υπολογιστής διαλέγει έναν τυχαίο αριθμό από το 1 ως το 100 και ο χρήστης προσπαθεί να τον μαντέψει."),
code_cell("import random\n\ndef guess_the_number():\n number = random.randint(1, 100)\n attempts = 0\n print('Έχω σκεφτεί έναν αριθμό από το 1 ως το 100. Μπορείς να τον μαντέψεις;')\n \n while True:\n # Uncomment and run locally:\n # guess = int(input('Η μαντεψιά σου: '))\n guess = number # Dummy guess to avoid infinite loop in notebooks without user input\n attempts += 1\n \n if guess < number:\n print('Πιο πάνω!')\n elif guess > number:\n print('Πιο κάτω!')\n else:\n print(f'Μπράβο! Το βρήκες σε {attempts} προσπάθειες.')\n break\n\n# guess_the_number()")
]
create_notebook("10_Projects/Project_1_Guess_Number.ipynb", proj_1)
proj_2 = [
md_cell("# Project 2: Bank Account Manager"),
md_cell("Χρησιμοποιώντας Κλάσεις (OOP), δημιουργήστε ένα σύστημα τραπεζικού λογαριασμού."),
code_cell("class BankAccount:\n def __init__(self, owner, balance=0):\n self.owner = owner\n self.balance = balance\n \n def deposit(self, amount):\n self.balance += amount\n print(f'Κατάθεση {amount}€. Νέο υπόλοιπο: {self.balance}€')\n \n def withdraw(self, amount):\n if amount <= self.balance:\n self.balance -= amount\n print(f'Ανάληψη {amount}€. Νέο υπόλοιπο: {self.balance}€')\n else:\n print('Μη επαρκές υπόλοιπο!')\n\n# Χρήση\naccount = BankAccount('Νίκος', 100)\naccount.deposit(50)\naccount.withdraw(30)\naccount.withdraw(200)")
]
create_notebook("10_Projects/Project_2_Bank_Account.ipynb", proj_2)
proj_3 = [
md_cell("# Project 3: Basic Data Analysis"),
md_cell("Χρησιμοποιήστε Pandas για να φορτώσετε ένα dummy dataset και να κάνετε απλή ανάλυση."),
code_cell("import pandas as pd\n\ndata = {\n 'Όνομα': ['Αλέξανδρος', 'Μαρία', 'Γιάννης', 'Ελένη'],\n 'Μισθός': [1200, 1500, 1000, 2000],\n 'Τμήμα': ['IT', 'HR', 'IT', 'Marketing']\n}\ndf = pd.DataFrame(data)\n\nprint('Μέσος μισθός ανά τμήμα:')\nprint(df.groupby('Τμήμα')['Μισθός'].mean())")
]
create_notebook("10_Projects/Project_3_Data_Analysis.ipynb", proj_3)
print("Notebooks generated successfully!")