generated from github/codespaces-blank
-
Notifications
You must be signed in to change notification settings - Fork 0
/
menulib.py
55 lines (43 loc) · 1.61 KB
/
menulib.py
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
class Menu:
def __init__(self, mymenu : list, pilihan = 0):
self.mymenu = mymenu
self.pilihan = pilihan
@property
def mymenu(self):
return self._mymenu
@mymenu.setter
def mymenu(self, mymenu):
self._mymenu = mymenu
def display_menu(self):
menu_str = str(self)
print('<<< M E N U >>>')
print(menu_str)
print()
self.pilihan = self.get_input(prompt = f'Pilihan anda 1-{len(self)}? ', limit= [1, len(self)], return_type = int)
@staticmethod
def get_input(prompt: str, data_type=int, limit=None, return_type=str):
valid = True
while True:
try:
inputs = input(prompt).strip()
if isinstance(data_type, str) is False:
inputs = data_type(inputs)
if isinstance(data_type, int):
if (limit[0] <= inputs <= limit[1]) is False:
valid = False
if valid:
return return_type(inputs)
except ValueError:
pass
def __len__(self):
return len(self.mymenu)
def __getitem__(self, indeks : int):
return self._mymenu[indeks]
def __str__(self):
menu_str = [f'{num}. {content}' for num, content in enumerate(self._mymenu, start = 1)]
return '\n'.join(menu_str)
def main():
menupil = Menu(['Membuat Persamaan Garis Lurus ', 'Membuat dengan Gradien dan Satu titik', 'Membuat dengan Dua Titik', 'Keluar'])
print(menupil[1])
if __name__ == '__main__':
main()