Пожалуйста, добавьте пример данных к своему вопросу.
В вашем коде:
if retVal.empty:
dayEc = dayEc-1
checkExchangerate(yearEc,monthEc,dayEc,currCode)
else:
return min(retVal)
Если retVal пуст, он будет рекурсивно вызывать себя. Но когда он выходит из рекурсии, он ничего не делает с возвращаемым значением, поэтому он возвращает None.
Чтобы это исправить, вы должны return
значение, возвращаемое из рекурсии:
if retVal.empty:
dayEc = dayEc-1
return checkExchangerate(yearEc,monthEc,dayEc,currCode)
else:
return min(retVal)
Также вы можете заменить:
dayEc = dayEc-1
return checkExchangerate(yearEc,monthEc,dayEc,currCode)
на
[113 ]Однако вместо рекурсии я рекомендую использовать цикл:
def checkExchangerate(yearEc,monthEc,dayEc,currCode):
currCodes = {...}
retVal = False
while not retVal or retVal.empty:
retVal = exch_rate[currCodes[currCode]][exch_rate['DAGS']==dt(yearEc,monthEc,dayEc)]
dayEc -= 1
print(retVal)
return min(retVal)
Это может вызвать бесконечный цикл (так же, как ваш код может вызвать бесконечную рекурсию), поэтому вот версия с циклом for: [ 1117]
def checkExchangerate(yearEc,monthEc,dayEc,currCode):
currCodes = {...}
retVal = False
for day in range(dayEc, dayEc-20, -1):
retVal = exch_rate[currCodes[currCode]][exch_rate['DAGS']==dt(yearEc,monthEc,day)]
if not retVal.empty:
break;
print(retVal)
if retVal.empty:
return some_error_code
else:
return min(retVal)
Вы можете изменить 20
на другое число. Или используйте range(dayEc, 1, -1)
- как я подозреваю, этот день никогда не должен быть меньше 1
Обычно это делается путем передачи адреса электронной почты (часто - универсального адреса) в PHP. Вот учебник по этому вопросу , который поможет вам начать в правильном направлении.
Наиболее вероятное решение заключается в том, что они делают пересылку по электронной почте.
Они вставляют объявление с идентификатором, например «job-fepsd-1120347193», вместе с реальным электронным письмом.
Затем они получают электронное письмо, отправив его по php-скрипту (проверьте google на PHP и Piping для хороших ресурсов по теме).
Сценарий затем ищет уникальный идентификатор и связывает его с реальным электронным письмом. Он пересылает письмо, полученное реальным парнем после.
Существует также другое возможное решение (но менее вероятное), они могут использовать POP3. Затем он будет проверять каждые X минут на перехвате всех адресов и затем пересылать сообщение нужному парню.