This is a python Programming Fix this issue: -2 no attribute of type date (year was integer) -2 isValidDay function: crashes if user enters a letter -2 test program missing asking user to enter info for person. ===================================================== This is a three program code: ModPerson modVerifyDate TestPerson ========================= Mod Person Code: from datetime import date class Person: def __init__(self,tmpSSN='000-00-0000',tmpLastName='Desmond',tmpFirstName='Nduka',birthYr=1996): self.__personTuple = (tmpSSN,tmpLastName,tmpFirstName,birthYr) def __str__(self): temp = "" temp += "Social Security Number: " + str(self.__personTuple[0])+'\n'\ + "Last Name: " + str(self.__personTuple[1]) + '\n'+\ "First Name: " + str(self.__personTuple[2])+'\n'+"Birth Date: " + \ str(self.__personTuple[3]) return temp def computeAge(self): curAge = date.today().year - self.__personTuple[3] return curAge def getFirstName(self): return self.__personTuple[2] def getLastName(self): return self.__personTuple[1] def getSSN(self): return self.__personTuple[0] def getBirthYear(self): return self.__personTuple[3] def setLastName(self,newLastName): curSSN = self.__personTuple[0] curfName = self.__personTuple[2] curBy = self.__personTuple[3] self.__personTuple = (curSSN,newLastName,curfName,curBy) def setFirstName(self,newFirstName): curSSN = self.__personTuple[0] curLName = self.__personTuple[1] curBy = self.__personTuple[3] self.__personTuple = (curSSN,curLName,newFirstName,curBy) ============================================================== modVerify Date: from datetime import * from calendar import * def isValidYear(year): #year is any string if year.isdigit() and int(year) > MINYEAR and \ int(year) < MAXYEAR: return True return False def isValidMonth(month): #month is any string if month.isdigit() and int(month) >= 1 \ and int(month) <= 12: return True return False def isValidDay(year, month, theirDays): res = monthrange(year, month) validNumDays = res[1] if theirDays >= 1 and theirDays <= validNumDays: return True return False ========================================= testPerson Code: from modPerson import Person from modVerifyDate import * print("CLASS PERSON:") p1 = Person(123121234,'Barack','Obama',1952) p2 = Person() print('p1:','\n',p1) print('p2:','\n',p2) print('The age for p1 is: ','\n',p1.computeAge()) print('The age for p2 is: ','\n',p2.computeAge()) print("TESTING THE GETTER METHOD FOR P1:") print('First name for p1 is: ',p1.getFirstName()) print('p1 Last Name: ',p1.getLastName()) print('p1 SSN: ',p1.getSSN()) print('p1 Birthyear: ', p1.getBirthYear()) print("TESTING THE GETTER METHOD FOR P2:") print('First name for p2: ',p2.getFirstName()) print('p2 Last Name: ',p2.getLastName()) print('p2 SSN: ',p2.getSSN()) print('p2 Birthdate: ',p2.getBirthYear()) print('TESTING SETTER METHOD FOR P1') p1.setLastName('Joe') p1.setFirstName('Biden') print(p1) print('TESTING SETTER METHOD FOR P2') p2.setLastName('Kamala') p2.setFirstName('Harris') print(p2)
This is a python Programming
Fix this issue:
-2 no attribute of type date
(year was integer)
-2 isValidDay function: crashes if user enters a letter
-2 test program missing asking user to enter info for person.
=====================================================
This is a three program code:
ModPerson
modVerifyDate
TestPerson
=========================
Mod Person Code:
from datetime import date
class Person:
def __init__(self,tmpSSN='000-00-0000',tmpLastName='Desmond',tmpFirstName='Nduka',birthYr=1996):
self.__personTuple = (tmpSSN,tmpLastName,tmpFirstName,birthYr)
def __str__(self):
temp = ""
temp += "Social Security Number: " + str(self.__personTuple[0])+'\n'\
+ "Last Name: " + str(self.__personTuple[1]) + '\n'+\
"First Name: " + str(self.__personTuple[2])+'\n'+"Birth Date: " + \
str(self.__personTuple[3])
return temp
def computeAge(self):
curAge = date.today().year - self.__personTuple[3]
return curAge
def getFirstName(self):
return self.__personTuple[2]
def getLastName(self):
return self.__personTuple[1]
def getSSN(self):
return self.__personTuple[0]
def getBirthYear(self):
return self.__personTuple[3]
def setLastName(self,newLastName):
curSSN = self.__personTuple[0]
curfName = self.__personTuple[2]
curBy = self.__personTuple[3]
self.__personTuple = (curSSN,newLastName,curfName,curBy)
def setFirstName(self,newFirstName):
curSSN = self.__personTuple[0]
curLName = self.__personTuple[1]
curBy = self.__personTuple[3]
self.__personTuple = (curSSN,curLName,newFirstName,curBy)
==============================================================
modVerify Date:
from datetime import *
from calendar import *
def isValidYear(year):
#year is any string
if year.isdigit() and int(year) > MINYEAR and \
int(year) < MAXYEAR:
return True
return False
def isValidMonth(month):
#month is any string
if month.isdigit() and int(month) >= 1 \
and int(month) <= 12:
return True
return False
def isValidDay(year, month, theirDays):
res = monthrange(year, month)
validNumDays = res[1]
if theirDays >= 1 and theirDays <= validNumDays:
return True
return False
=========================================
testPerson Code:
from modPerson import Person
from modVerifyDate import *
print("CLASS PERSON:")
p1 = Person(123121234,'Barack','Obama',1952)
p2 = Person()
print('p1:','\n',p1)
print('p2:','\n',p2)
print('The age for p1 is: ','\n',p1.computeAge())
print('The age for p2 is: ','\n',p2.computeAge())
print("TESTING THE GETTER METHOD FOR P1:")
print('First name for p1 is: ',p1.getFirstName())
print('p1 Last Name: ',p1.getLastName())
print('p1 SSN: ',p1.getSSN())
print('p1 Birthyear: ', p1.getBirthYear())
print("TESTING THE GETTER METHOD FOR P2:")
print('First name for p2: ',p2.getFirstName())
print('p2 Last Name: ',p2.getLastName())
print('p2 SSN: ',p2.getSSN())
print('p2 Birthdate: ',p2.getBirthYear())
print('TESTING SETTER METHOD FOR P1')
p1.setLastName('Joe')
p1.setFirstName('Biden')
print(p1)
print('TESTING SETTER METHOD FOR P2')
p2.setLastName('Kamala')
p2.setFirstName('Harris')
print(p2)

Step by step
Solved in 2 steps with 1 images









