2015-09-02 3 views
0

Я пытаюсь сделать эту программную функцию рекурсивным образом. Программа принимает файл csv, вызывает столбцы и принимает расстояние между начальной и конечной точками. В пределах длин 10 миль случайные выборки берутся из начальной точки и до конечной точки. Если образец все еще меньше конечной точки - 2, новый образец берется, затем милями по дороге от varOut. Моя цель - сделать эту программу рекурсивно. Но я новый для рекурсии. На данный момент единственным выходом im становится «Нет», поэтому им интересно, что именно вызывает это.Попытка рекурсии в Python

import csv 
import math 
import random as r 

def yielderOut(length): 
    n = 0 
    rounder = 3 
    readerIn() 
    for col in csv.DictReader(open('2015_FILES_COMBINED.CSV')): 
     corridorRB = str(col['CORRIDOR_CODE_RB']) 
     begMi = float(col['FRFPOST']) 
     endMi = float(col['TRFPOST']) 
     dir_ = str(col['DIR']) 
     if abs(begMi - endMi) > length and dir_ == 'I': 
      varOut = round(r.uniform((math.ceil(begMi) + 1), (math.floor(begMi) + (length))), rounder) 
      if varOut < (endMi - 2): 
       return yielderOut(varOut + length), n + 1 
      else: 
       return corridorRB, round(begMi, rounder), round(endMi, rounder), 'Increasing', varOut, n 

yielderOut(10) 

данные

CORRIDOR_CODE_RB  FRFPOST   TRFPOST   DIR 
     C000001E    0   667.145996   I 
     C000001E  667.145996   0    D 
     C000003N    0    110.5   I 
     C000003N   110.5    0    D 
+1

И в чем ваш вопрос? –

+1

Кроме того, вы можете поместить все операторы 'import' в начале файла; это более аккуратно. –

+0

Хорошо хороший совет. Я снова редактировал вступительное сообщение, которое дает больше ответа на вопрос. –

ответ

1

Это трудно понять, что ваша функция делает без выборки данных ...

Но причина, вы получаете None возвращаемые что при выполнении условия

abs(begMi - endMi) > length and dir_ == 'I' 

не является t rue для любого col, после завершения цикла for ваша функция вернет значение по умолчанию None.

+0

CORRIDOR_CODE_RB \t \t FRFPOST TRFPOST \t DIR C000001E \t 667,145996 I C000001E \t \t 667,145996 0 \t D –

+0

Существует некоторая выборка входного сигнала выше –

+1

@hollow_Victory: Не могли бы вы изменить некоторые образцы ввод в свой вопрос сам? Предпочтительно более одной строки, если только одна строка не является достаточной для иллюстрации вашего алгоритма. –

Смежные вопросы