My current student accommodation uses a manual paper and pen system for checking if students have mail so I made this simple Python script to help mitigate the problem of manually searching through spreadsheets just to see if you have mail or not, which I have been asked to demo soon. It's quite basic but I figured I should probably get it code reviewed since it may get real world usage.
import json
import os
if not os.path.isfile('parcels.json'):
open('parcels.json', 'w').write(json.dumps({}))
parcels = json.loads(open('parcels.json').read())
def add(student_id, new_letters, new_parcels):
if student_id in parcels:
parcels[student_id][0] += new_letters
parcels[student_id][1] += new_parcels
else:
parcels[student_id] = [new_letters, new_parcels]
def collect(student_id):
if student_id in parcels:
parcel_info = 'Letter: ' + str(parcels[student_id][0]) + ' Parcel: ' + str(parcels[student_id][1])
del parcels[student_id]
return parcel_info
else:
return 'Letter: 0 Parcel: 0'
print('1. Add\n2. Collect')
option = input('Option: ')
student_id = input('Student ID: ')
if len(student_id) != 7:
print('Invalid input! (student ID must be 7 digits long)')
raise SystemExit(1)
try:
if int(student_id) < 0:
print('Invalid input! (student ID must be a non-negative integer)')
raise SystemExit(1)
except ValueError:
print('Invalid input! (student ID must be an integer)')
raise SystemExit(1)
if option == '1':
try:
new_letters = int(input('Letters: '))
new_parcels = int(input('Parcels: '))
except ValueError:
print('Invalid input! (only integers allowed)')
raise SystemExit(1)
if new_letters < 0 or new_parcels < 0:
print('Invalid input! (only non-negative integers allowed)')
raise SystemExit(1)
add(student_id, new_letters, new_parcels)
elif option == '2':
print(collect(student_id))
else:
print('Invalid option!')
open('parcels.json', 'w').write(json.dumps(parcels))