Answer:
import re
#section 1
while True:
try:
major=input('Enter Major: ')
if re.search(r'^\d{1,4}$',major):
minor=input('Enter minor: ')
else:
raise
try:
if re.search(r'^\d{1,4}$',minor):
sub1=input('Enter sub1: ')
else:
raise
try:
if re.search(r'^\d{1,4}$',sub1):
sub2=input('Enter sub2: ')
else:
raise
try:
if re.search(r'^\d{1,4}$',sub2):
break
else:
raise
except:
print('enter a correct sub 2')
except:
print('enter a correct sub1')
except:
print('Enter a correct minor ')
except:
print('enter a correct Major')
#section 2
sub1= f"{int(sub1):04d}"
sub2= f"{int(sub2):04d}"
major= f"{int(major):04d}"
minor= f"{int(minor):04d}"
if major == '0000' and minor == '0000' and sub1=='0000' and sub2=='0000':
print('INVALID!!! Acount Number')
else:
print('-----------------------')
print('Your Account Number is')
print(major, minor, sub1, sub2)
print('-----------------------')
Explanation:
The programming language used is python 3
The Regular Expression Module was imported to allow us perform special operations on string variables.
This is the pattern that was used to check if an input was valid or invalid re.search(r'^\d{1,4}$',string)
what this pattern does is that it ensures that:
- (\d) represents digits that is any number from 0-9.
- ( ^ ) ensures that it starts with a digit.
- ({1,4}) accepts digits with length ranging from 1-4. i.e you can enter at least one digit and at most four digits.
- ($) ensures that the input ends with a digit
- string is the text that is passed to the pattern
we also made use of fstrings
sub1= f"{int(sub1):04d}"
the above line of code takes 'sub1' in this case, and converts it temporarily to an integer and ensures it has a length of 4 by adding 0's in front of it to convert it to a four digit number.
These are the major though areas, but i'll explain the sections too.
#section 1
In this section the WHILE loop is used in conjunction with the TRY and EXCEPT block and the IF statement to ensure that the correct input is given.
The while loop will keep looping until the correct input is inserted before it breaks and each input is tested in the try and except block using the if statement and the regular expression pattern I explained, as a result, you cannot input a letter, a blank space, a punctuation or numbers with length greater than 4, it has to be numbers within the range of 1-4.
#section 2
The second section converts each entry to a four digit number and checks with an if statement if the entry is all zeros (0000 0000 0000 0000) and prints invalid.
Otherwise, it prints the account number.
check the attachment to see how the script runs.