Il mio codice richiede 2 date e trova l'età di quelle date in giorni. Nei miei giorni, il metodo BetweenDates, l'istruttore utilizza un'asserzione:
assert not dateIsBefore(year2, month2, day2, year1, month1, day1)
La mia domanda è, perché devi usare 'asserire no' in questo esempio e nella firma perché è year2, month2, day2 prima quando nel metodo dateIsBefore è year1, month1, day2, year2, month2, day2 . Ecco il resto del codice.
def dateIsBefore(year1, month1, day1, year2, month2, day2):
if year2 > year1:
return True
else: #if year1 > year or year1 = year2
if year2 == year1:
if month2 > month1:
return True
else:
if month2 == month1:
if day2 > day1:
return True
else:
return False
return False
return False
def nextday(year, month, day):
if day < 30:
return year, month, day + 1
else: # if day >= 30
if month < 12:
return year, month + 1, 1
else: # month >= 12
return year + 1, 1, 1
def daysBetweenDates(year1, month1, day1, year2, month2, day2):
#assert dateIsBefore(year1, month1, day1, year2, month2, day2)
**assert not dateIsBefore(year2, month2, day2, year1, month1, day1)**
days = 0
while dateIsBefore(year1, month1, day1, year2, month2, day2):
year1, month1, day1 = nextday(year1, month1, day1)
days += 1
return days