Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Task 3.5
- By Mark Wu
- @markwu.me
- '''
- # import os
- # import re
- # import datetime
- # datetime is a good module to use to check date, but for demonstration purpose this is not used.
- # Initialization
- member_list = [] # List
- # The following are the functions used in the program
- def validateuserID(instring):
- if len(instring) == 6 and instring[0].isupper() and instring[1:3].islower() and instring[3:].isnumeric():
- return True
- else:
- return False
- def validateDate(instring = ''):
- # input format: MMDDYYYY
- if len(instring) == 8 and instring.isnumeric():
- month = int(instring[:2])
- day = int(instring[2:4])
- year = int(instring[-4:])
- if 0 <= month <= 12 and 0 <= day <= 31 and 1800 <= year <= 2016:
- formatted_date = '%i-%i-%i' % (month, day, year)
- return formatted_date
- return ''
- def input_name():
- instr = input("Please input member's name >>>") # string
- while not 0 < len(instr) < 25 or instr in (','):
- print("Invalid name. A valid name should be less than 25 characters. Please input again.")
- instr = input("Please input member's name >>>")
- return instr
- def input_id(member_name=''):
- instr = input("Please input member ID for %s >>>" % member_name)
- while not validateuserID(instr):
- print("Invalid ID. Please try again.")
- instr = input("Please input member ID for %s >>>" % member_name)
- return instr
- def input_phone(member_name=''):
- instr = input("Please input the phone number for %s (11 digits) >>>" % member_name)
- while not instr.isnumeric() or len(instr) != 11:
- print("Invalid Phone Number (Should be 11 digits). Please try again.")
- instr = input("Please input the phone number for %s (11 digits) >>>" % member_name)
- return instr
- def input_date(member_name=''):
- instr = input("Please input the membership start date for %s (MM-DD-YYYY) >>>" % member_name)
- result = validateDate(instr) # blank string acts as False
- while not result:
- print("Invalid membership start date (MM-DD-YYYY).")
- instr = input("Please input the membership start date for %s (MM-DD-YYYY) >>>" % member_name)
- result = validateDate(instr)
- return result
- # Check if file exists:
- # file_found = os.path.isfile('record.txt') # Boolean
- file_found = True # Can't do this validation because I can't import
- if file_found:
- try:
- with open('record.txt') as myfile:
- # following code to check the format of the existing file
- content = myfile.readlines()
- for each in content:
- each_member = each.split(',')
- each_member[1] = each_member[1].strip() # remove line breakers
- member_list.append(each_member)
- print("Existing file found. All new input will be added to the file.")
- except:
- # # remove bad files
- # try:
- # os.remove('record.txt')
- # print("Invalid record format. Bad file removed.")
- # except:
- # print("Invalid record format. But bad file removal failed!")
- # finally:
- print("Due to inconsistent file, program is aborted")
- exit()
- # Ask user to input data for each members
- for each in member_list:
- member_name = each[0]
- print("\nNow please add data for %s." % member_name)
- each.append(input_phone(member_name))
- each.append(input_date(member_name))
- # Create New File and store the result
- try:
- with open('record_appended.txt', mode='w') as myfile:
- for each in member_list:
- newline = ','.join(each)
- myfile.write(newline + '\n')
- print('Data successfully stored.')
- except:
- print("Can't create file! Please check file permission.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement