Skip to content

Commit b169d9d

Browse files
committed
Add enums exercise
1 parent 7c1f71d commit b169d9d

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

prep-exercises/enums_exercise.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from dataclasses import dataclass
2+
from enum import Enum
3+
4+
class OperatingSystem(Enum):
5+
MACOS = "macOS"
6+
UBUNTU = "Ubuntu"
7+
ARCH = "Arch Linux"
8+
9+
@dataclass
10+
class Laptop:
11+
id: int
12+
manufacturer: str
13+
model: str
14+
screen_size_in_inches: float
15+
operating_system: OperatingSystem
16+
17+
laptops = [
18+
Laptop(id=1, manufacturer="Lenovo", model="ThinkPad", screen_size_in_inches=14, operating_system=OperatingSystem.ARCH),
19+
Laptop(id=2, manufacturer="HP", model="Pavilion", screen_size_in_inches=15.6, operating_system=OperatingSystem.UBUNTU),
20+
Laptop(id=3, manufacturer="Asus", model="ZenBook", screen_size_in_inches=13.3, operating_system=OperatingSystem.UBUNTU),
21+
Laptop(id=4, manufacturer="Apple", model="MacBook Air", screen_size_in_inches=13, operating_system=OperatingSystem.MACOS),
22+
]
23+
24+
@dataclass
25+
class Person:
26+
name: str
27+
age: int
28+
preferred_operating_system: OperatingSystem
29+
30+
31+
name = input('Please enter your name: ')
32+
33+
age_input = input('Please enter your age: ')
34+
try:
35+
age = int(age_input)
36+
except ValueError:
37+
print(f"Error: '{age_input}' is not a valid age. Please enter a number.")
38+
exit()
39+
40+
preferred_os_input = input('Please enter your preferred operating system: ')
41+
try:
42+
preferred_operating_system = OperatingSystem(preferred_os_input)
43+
except ValueError:
44+
available_options = ', '.join([os.value for os in OperatingSystem])
45+
print(f"Error: '{preferred_os_input}' is not available. Please choose from: {available_options}")
46+
exit()
47+
48+
49+
person = Person(name=name, age=age, preferred_operating_system=preferred_operating_system)
50+
51+
52+
number_of_available_laptops = sum(
53+
1 for laptop in laptops if laptop.operating_system == person.preferred_operating_system
54+
)
55+
56+
def offer_laptop_to_user() -> None:
57+
offer = input('Would you like a laptop with this OS (yes / no) ? ')
58+
if offer.lower() == "y" or offer.lower() == "yes":
59+
print('Great! Please come on monday next week to collect your laptop')
60+
else:
61+
print('No problem. See you later.')
62+
63+
if number_of_available_laptops == 1:
64+
print(f'There is {number_of_available_laptops} laptop available with your preferred operating system.')
65+
offer_laptop_to_user()
66+
elif number_of_available_laptops > 1:
67+
print(f'There are {number_of_available_laptops} laptops available with your preferred operating system.')
68+
offer_laptop_to_user()
69+
else:
70+
print('There are no laptops available with your preferred operating system.')

0 commit comments

Comments
 (0)