Skip to content

Commit 831dda0

Browse files
committed
exercise 1 complete
1 parent 6b73659 commit 831dda0

6 files changed

Lines changed: 142 additions & 0 deletions

File tree

‎Sprint 5 Prep Exercises/.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.venv

‎Sprint 5 Prep Exercises/account.py‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
def open_account(balances: dict[str, int], name: str, amount: int) -> None:
2+
balances[name] = amount
3+
4+
def sum_balances(accounts: dict[str, int]) -> int:
5+
total = 0
6+
for name, pence in accounts.items():
7+
print(f"{name} had balance {pence}")
8+
total += pence
9+
return total
10+
11+
def format_pence_as_string(total_pence: int) -> str:
12+
if total_pence < 100:
13+
return f"{total_pence}p"
14+
pounds = int(total_pence / 100)
15+
pence = total_pence % 100
16+
return f"£{pounds}.{pence:02d}"
17+
18+
balances = {
19+
"Sima": 700,
20+
"Linn": 545,
21+
"Georg": 831,
22+
}
23+
24+
open_account(balances, "Tobi", 913)
25+
open_account(balances, "Olya", 713)
26+
27+
total_pence = sum_balances(balances)
28+
total_string = format_pence_as_string(total_pence)
29+
30+
print(f"The bank accounts total {total_string}")
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Exercise
2+
# Predict what double("22") will do.
3+
# It will treat "22" as a integer and return 11 as an integer
4+
5+
# Then run the code and check.
6+
def double(value):
7+
return value * 2
8+
9+
print(double("22"))
10+
11+
# Did it do what you expected? Why did it return the value it did?
12+
# No, it treated it like a string, so instead of trying to do math, it did string repetition.

‎Sprint 5 Prep Exercises/laptop.py‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from dataclasses import dataclass
2+
from typing import List
3+
4+
@dataclass(frozen=True)
5+
class Person:
6+
name: str
7+
age: int
8+
preferred_operating_systems: List[str]
9+
10+
11+
@dataclass(frozen=True)
12+
class Laptop:
13+
id: int
14+
manufacturer: str
15+
model: str
16+
screen_size_in_inches: float
17+
operating_system: str
18+
19+
20+
def find_possible_laptops(laptops: List[Laptop], person: Person) -> List[Laptop]:
21+
possible_laptops = []
22+
for laptop in laptops:
23+
if laptop.operating_system == person.preferred_operating_systems:
24+
possible_laptops.append(laptop)
25+
return possible_laptops
26+
27+
28+
people = [
29+
Person(name="Imran", age=22, preferred_operating_systems=["Ubuntu"]),
30+
Person(name="Eliza", age=34, preferred_operating_systems=["Arch Linux"]),
31+
]
32+
33+
laptops = [
34+
Laptop(id=1, manufacturer="Dell", model="XPS", screen_size_in_inches=13, operating_system="Arch Linux"),
35+
Laptop(id=2, manufacturer="Dell", model="XPS", screen_size_in_inches=15, operating_system="Ubuntu"),
36+
Laptop(id=3, manufacturer="Dell", model="XPS", screen_size_in_inches=15, operating_system="ubuntu"),
37+
Laptop(id=4, manufacturer="Apple", model="macBook", screen_size_in_inches=13, operating_system="macOS"),
38+
]
39+
40+
for person in people:
41+
possible_laptops = find_possible_laptops(laptops, person)
42+
print(f"Possible laptops for {person.name}: {possible_laptops}")

‎Sprint 5 Prep Exercises/parent.py‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Parent:
2+
def __init__(self, first_name: str, last_name: str):
3+
self.first_name = first_name
4+
self.last_name = last_name
5+
6+
def get_name(self) -> str:
7+
return f"{self.first_name} {self.last_name}"
8+
9+
10+
class Child(Parent):
11+
def __init__(self, first_name: str, last_name: str):
12+
super().__init__(first_name, last_name)
13+
self.previous_last_names = []
14+
15+
def change_last_name(self, last_name) -> None:
16+
self.previous_last_names.append(self.last_name)
17+
self.last_name = last_name
18+
19+
def get_full_name(self) -> str:
20+
suffix = ""
21+
if len(self.previous_last_names) > 0:
22+
suffix = f" (née {self.previous_last_names[0]})"
23+
return f"{self.first_name} {self.last_name}{suffix}"
24+
25+
person1 = Child("Elizaveta", "Alekseeva")
26+
print(person1.get_name())
27+
print(person1.get_full_name())
28+
person1.change_last_name("Tyurina")
29+
print(person1.get_name())
30+
print(person1.get_full_name())
31+
32+
person2 = Parent("Elizaveta", "Alekseeva")
33+
print(person2.get_name())
34+
# print(person2.get_full_name())
35+
# person2.change_last_name("Tyurina")
36+
print(person2.get_name())
37+
# print(person2.get_full_name())

‎Sprint 5 Prep Exercises/person.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from dataclasses import dataclass
2+
from typing import List
3+
4+
@dataclass(frozen=True)
5+
class Person:
6+
name: str
7+
children: List["Person"]
8+
age: int
9+
10+
fatma = Person(name="Fatma", children=[], age = 10)
11+
aisha = Person(name="Aisha", children=[], age = 5)
12+
13+
imran = Person(name="Imran", children=[fatma, aisha], age = 30)
14+
15+
def print_family_tree(person: Person) -> None:
16+
print(person.name)
17+
for child in person.children:
18+
print(f"- {child.name} ({child.age})")
19+
20+
print_family_tree(imran)

0 commit comments

Comments
 (0)