I have written a little code so people can input a date. The error check that stops a month being entered which is less than 1 or greater than 12 should return a value only when it is within these bounds. If I enter a few 'out of bounds' numbers, it correctly re-asks for a month to be re-entered but returns all the values. What is going on?
# the question asked to get the month input for the xml updater
def month_q():
try:
month = int(input('What was the month [MM] which the installers were updated/created by xxx?:'))
except:
print("That was not a valid number. Please re-enter a 2 digit month")
month_q()
updatemonth = month_check(month)
print("Month q returning:", updatemonth)
return updatemonth
# check the update month is a valid month
def month_check(month):
if month < 1:
print("The month must be a number between 01 and 12. Please re-enter")
month_q()
elif month > 12:
print("The month must be a number between 01 and 12. Please re-enter")
month_q()
else:
print("Month_check returning month:", month)
return month
# this updates the xml file with the date of the last installer
def xml_updater():
updatemonth = month_q()
print("Update month:", updatemonth)
xml_updater()
The result is of entering bad months '15', '14' and '13' before entering a correct one '12' is:
What was the month [MM] which the installers were updated/created by xxx?:15
The month must be a number between 01 and 12. Please re-enter
What was the month [MM] which the installers were updated/created by xxx?:14
The month must be a number between 01 and 12. Please re-enter
What was the month [MM] which the installers were updated/created by xxx?:13
The month must be a number between 01 and 12. Please re-enter
What was the month [MM] which the installers were updated/created by xxx?:12
Month_check returning month: 12
Month q returning: 12
Month q returning: None
Month q returning: None
Month q returning: None
Update month: None
What is going on?