Untitled
unknown
python
2 years ago
3.0 kB
29
Indexable
plates = [] # File-wide list representing the stack of plates
# Function that adds plates to the stack. Will perform sanity checks and inform the user if the request is invalid.
def add_plate():
print('Add a plate')
print('=' * 11)
print('Enter a plate size: ')
# Pause for user input and store the value as 'plate_size'
plate_size = int(input())
# Conditional logic to perform sanity checks and add plates if request is sane
if plate_size < 1: # Not a sane value
print(f'Can\'t place a plate of size {plate_size} on the stack. Please choose a value greater than zero')
elif len(plates) > 0 and plate_size > plates[-1]: # Plate size violates rule of top-down ascending order
print(f'Can\'t place a plate of size {plate_size} on top of another plate of size {plates[0]}.')
else: # Sane request, adding to stack
plates.append(plate_size)
print('Success!')
# Function that prints the number of plates on the stack
def print_plate():
print('Print plates')
print('=' * 11)
if not plates or plates[0] == 0:
print('There are no stacked plates.')
for plate in reversed(plates):
print(plate)
# Function that removes plates from the stack. Will perform sanity checks and inform the user if the request is invalid.
def remove_plate():
if (len(plates)) < 1: # No plates to be removed
print('No plates to remove.')
return
print('Remove plates')
print('=' * 11)
print(f'{plates[-1]} plates on top')
print('How many plates to remove?: ')
# Pause for user input and store the value as 'plate_size'
plate_size = int(input())
# Conditional logic to perform sanity checks and add plates if request is sane
if plate_size > plates[-1]: # Plate size violates rule of top-down ascending order
print(f'Can\'t remove more than {plates[-1]} plates. You chose {plate_size}.')
elif plate_size < 1: # Plate size is nonsensical
print('Can\'t remove less than 1 plate.')
else: # Sane request
if plates[-1] - plate_size == 0:
plates.pop() # Top plate has no elements, we remove it
else:
plates[-1] = plates[-1] - plate_size # Plates are removed from top of stack
print('Success!')
# Runner function
def run():
while True: # Create Menu
print('Menu')
print('=' * 16)
print('0. [Exit]')
print('1. Add a Plate')
print('2. Print Plates')
print('3. Remove Plates')
print('Select [0-3]:')
# Pause for user input and store the value as 'selection'
selection = input()
match selection:
case '0':
print('Goodbye!')
break # Program exit
case '1':
add_plate()
case '2':
print_plate()
case '3':
remove_plate()
case _:
print('Invalid')
if __name__ == '__main__':
run()
Editor is loading...
Leave a Comment