Я пытаюсь рассчитать стоимость парковки с помощью рекурсии, когда пользователи вводят время начала парковки до конца парковки
Плата за парковку выглядит следующим образом:
- 07: 00до 11:00 - 1,30 долл. США за 30 минут
- 11: 00 до 17:00 - 1,50 долл. США за 30 минут
- 17: 00–22:30 - 0,80 долл. США за 30 минут
- 22: 30–07:30 - 0,70 долл. США за 30 минут, но не более 5,60 долл. США
Изменить:
Извините, если я кого-то обидел. Я новичок в Python и не знаком с форумом. Вы можете понизить голос столько, сколько захотите, но я действительно надеюсь, что смогу понять это так, как пытался весь день.
Это файл Excel, содержащий информацию о плате за парковку.
df = pd.read_csv("carparkFees.csv")
output = (df.loc[df['Carpark Name'] == 'ANGULLIA PARK OFF STREET'])
userOutput = output[
['Lot Type', 'WeekDay Rates', 'WeekDay Minimum', 'Saturday Rates', 'Saturday Minimum', 'Sunday & PH Rates',
'Sunday & PH Minimum', 'Start Time', 'End Time']]
timeStart = '2019-10-16 08:00:00'
timeEnd = '2019-10-16 23:00:00
timeStart = pd.to_datetime(timeStart).strftime('%Y/%m/%d %H:%M')
timeStart = datetime.datetime.strptime(timeStart, '%Y/%m/%d %H:%M')
startingTime = pd.to_datetime(timeStart, format='%H:%M').time()
timeEnd = pd.to_datetime(timeEnd).strftime('%Y/%m/%d %H:%M')
timeEnd = datetime.datetime.strptime(timeEnd, '%Y/%m/%d %H:%M')
count = 0
def countCarPrice(timeStart, timeEnd, startingTime, count):
a = 0
b = 0
for n in userOutput['Start Time']:
for y in userOutput['End Time']:
while a < len(userOutput):
while userOutput['Lot Type'].iloc[a] == 'Car':
while (pd.to_datetime(userOutput['Start Time'].iloc[b], format='%H:%M').time() <= startingTime < pd.to_datetime(userOutput['End Time'].iloc[b], format='%H:%M').time()) and timeStart != timeEnd:
minMins = int(userOutput['WeekDay Minimum'].iloc[b].replace('mins', ""))
timeStart += datetime.timedelta(minutes=minMins)
startingTime = pd.to_datetime(timeStart, format='%H:%M').time()
count += float(userOutput['WeekDay Rates'].iloc[b].replace('$', ""))
b += 1
a += 1
return count + countCarPrice(timeStart, timeEnd, startingTime, count)
print countCarPrice(timeStart, timeEnd, startingTime, count)
Прямо сейчас приведенный выше код выдает ошибку при рекурсии. Если я только верну счетчик, он будет рассчитываться как обычно.
Я не могу определить часть, где она проходит 22:30, поскольку это верно для времени начала <22:30, но неверно для времени начала <07:00 </p>
И я застрял здесь. Еще раз прошу прощения, если я допустил какие-либо ошибки, и приветствую любую конструктивную критику, если вы считаете, что мое кодирование действительно паршиво.