-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday33_speakPython22.py
More file actions
157 lines (108 loc) Β· 3.54 KB
/
Copy pathday33_speakPython22.py
File metadata and controls
157 lines (108 loc) Β· 3.54 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
"""π§ Day 33 β Speak Python 22
Phase 6: Balanced Learning (Recursion + Data Structures + OOP + Debugging + Mini Project)"""
"""β
Problem Set
π Recursion (2 problems)
Fibonacci (Recursive with Memoization)
Write a recursive function to generate Fibonacci numbers using memoization (dictionary caching) to optimize performance.
Input: fib(10) β Output: 55"""
# def fib(n):
# if n == 0 or n == 1:
# return n
# return fib(n-1) + fib(n-2)
# print(fib(10))
"""String Reversal (Recursive)
Write a recursive function that reverses a string.
Input: "python" β Output: "nohtyp" """
# def revers_string(s):
# if len(s) == 0:
# return s
# return revers_string(s[1:]) + s[0]
# print(revers_string("Jisan"))
# print(revers_string("python"))
"""β‘ Other Concepts (2 problems)
Set Operations
Create two sets and perform: union, intersection, and difference. Print the results."""
# test1 = {3, 4, 5, 6}
# test2 = {9, 8, 7, 6, 4}
# def main():
# print(f"union: {set_union(test1, test2)}")
# print(f"intersection : {set_inter(test1, test2)}")
# print(f"difference: {set_diff(test1,test2)}")
# def set_union(set1, set2):
# return set1.union(set2)
# def set_inter(set1, set2):
# return set1.intersection(set2)
# def set_diff(set1, set2):
# return set1.difference(set2)
# main()
"""List Comprehension with Condition
From a list of numbers, create a new list that contains only the numbers divisible by 3.
# Input: [1,2,3,4,5,6,7,8,9] β Output: [3,6,9]"""
# nums = [1,2,3,4,5,6,7,8,9]
# div_3 = [n for n in nums if n % 3 == 0]
# print(div_3)
"""π οΈ Debugging Task
OOP Inheritance Bug
The following code has a bug in inheritance. Fix it.
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
self.breed = breed
d = Dog("Tommy", "German Shepherd")
print(d.name, d.breed) # Expected: Tommy German Shepherd """
# fixed code:
# class Animal:
# def __init__(self, name):
# self.name = name
# class Dog(Animal):
# def __init__(self, name, breed):
# super().__init__(name)
# self.breed = breed
# d = Dog("Tommy", "German Shepherd")
# print(d.name, d.breed)
"""π Mini Project
Task Manager (OOP + File Handling)
Build a small Task Manager program.
Create a class TaskManager.
Features:
add_task(task) β add a new task (save to JSON file)
view_tasks() β show all tasks
remove_task(task) β remove a task
Save tasks persistently in a file tasks.json."""
import json
from file_utilites import load_json # this is my wone library
class TaskManager:
def __init__(self):
self.data = load_json("tasks.json")
def save_task(self):
with open("tasks.json", "w") as file:
json.dump(self.data, file, indent=2)
def add_task(self, task):
next_key = str(len(self.data) + 1)
self.data[next_key] = task
self.save_task()
def view_tasks(self):
if not self.data:
print("No tasks available")
return
print("Current tasks: ")
for n, task in self.data.items():
print(f"{n}. {task}")
def remove_task(self, number):
number = str(number)
if number in self.data:
del self.data[number]
self.save_task()
print("Task is removed")
else:
print(f"Error: Task number {number} not found.")
tm = TaskManager()
tm.add_task("homework")
tm.add_task("python")
print("befor")
tm.view_tasks()
tm.remove_task(1)
print("after")
tm.view_tasks()