Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2010, 15:57
AxL456
Invitado
 
Mensajes: n/a
Puntos:
problema con FOR en codigo

Buenas..

estoy teniendo un problema bastante estupido pero me tiene detenido el programa, ya he tratado todo lo que se me ha ocurrido y no logro corregirlo, por lo que quisiera que le den un vistazo al codigo a ver cual es el problema:

Código Python:
Ver original
  1. ###Factores de friccion en turbulencia total para los distintos diametros
  2. ###nominales de los accesorios
  3. #Variable = ((mm),(inch),(ft))
  4. ft_tabla = ((15.0, 0.5, 0.027),
  5.             (20.0, 0.75, 0.025),
  6.             (25.0, 1.0, 0.023),
  7.             (32.0, 1.25, 0.022),
  8.             (40.0, 1.5, 0.021),
  9.             (50.0, 2.0, 0.019),
  10.             (65.0, 2.5, 0.018),
  11.             (80.0, 3.0, 0.018),
  12.             (100.0, 4.0, 0.017),
  13.             (125.0, 5.0, 0.016),
  14.             (150.0, 6.0, 0.015),
  15.             (200.0, 8.0, 0.014),
  16.             (250.0, 10.0, 0.014),
  17.             (300.0, 12.0, 0.013),
  18.             (400.0, 16.0, 0.013),
  19.             (450.0, 18.0, 0.012),
  20.             (600.0, 24.0, 0.012))
  21.            
  22. def FtMilimetros(D):
  23.     """Funcion para obtener el valor del factor de turbulencia total a partir
  24.        del diametro nominal en milimetros del accesorio
  25.        Xmm = diametro nominal (mm)
  26.        """
  27. ##    print "1"
  28.     for x in ft_tabla:
  29. ##        print "2"
  30.         if x[0] >= D:
  31. ##            print "3"
  32. ##            print "4"
  33.             ft = x[-1]
  34. ##            print "5"
  35.             return ft
  36.         else:
  37. ##            print "6"
  38.             return None
  39.  
  40. da = 150 #Diametro de valvula
  41. ft = FtMilimetros(da)
  42.  
  43. print ft

El programa basicamente lo que hace es iterar a traves de "ft_tabla" comparando el primer valor de cada tupla dentro de "ft_tabla" con un valor predeterminado (da) y si el valor es mayor o igual que "da" entonces asigna el ultimo valor de dicha tupla a la variable ft...

hasta aqui todo bien, el problema es que a pesar que de existen valores mayores a "da" (150) el programa no asigna ningun valor a ft y ejecuta el bloque "else"..

si anulamos la parte del "else" entonces el codigo funciona correctamente:

Código Python:
Ver original
  1. ###Factores de friccion en turbulencia total para los distintos diametros
  2. ###nominales de los accesorios
  3. #Variable = ((mm),(inch),(ft))
  4. ft_tabla = ((15.0, 0.5, 0.027),
  5.             (20.0, 0.75, 0.025),
  6.             (25.0, 1.0, 0.023),
  7.             (32.0, 1.25, 0.022),
  8.             (40.0, 1.5, 0.021),
  9.             (50.0, 2.0, 0.019),
  10.             (65.0, 2.5, 0.018),
  11.             (80.0, 3.0, 0.018),
  12.             (100.0, 4.0, 0.017),
  13.             (125.0, 5.0, 0.016),
  14.             (150.0, 6.0, 0.015),
  15.             (200.0, 8.0, 0.014),
  16.             (250.0, 10.0, 0.014),
  17.             (300.0, 12.0, 0.013),
  18.             (400.0, 16.0, 0.013),
  19.             (450.0, 18.0, 0.012),
  20.             (600.0, 24.0, 0.012))
  21.            
  22. def FtMilimetros(D):
  23.     """Funcion para obtener el valor del factor de turbulencia total a partir
  24.        del diametro nominal en milimetros del accesorio
  25.        Xmm = diametro nominal (mm)
  26.        """
  27. ##    print "1"
  28.     for x in ft_tabla:
  29. ##        print "2"
  30.         if x[0] >= D:
  31. ##            print "3"
  32. ##            print "4"
  33.             ft = x[-1]
  34. ##            print "5"
  35.             return ft
  36. ##        else:
  37. ##            print "6"
  38. ##            return None
  39.  
  40. da = 150 #Diametro de valvula
  41. ft = FtMilimetros(da)
  42.  
  43. print ft

entonces no entiendo porque cuando el "else" esta descomentado, el programa no funciona correctamente :S