コード例 #1
0
def iterable_de_csv(file: str,
                    delimiter: str = ",",
                    encoding='utf-8') -> Iterable[list[str]]:
    checkArgument(existe_fichero(file), 'El fichero {} no existe'.format(file))
    with open(file, encoding=encoding) as f:
        lector = csv.reader(f, delimiter=delimiter)
        for line in lector:
            yield line
コード例 #2
0
def mcd(a: int, b: int) -> int:
    checkArgument(
        a >= 0 and b > 0, 'El coeficiente a debe ser \
         mayor o igual que cero y b mayor que cero \
        y son: a = {0}, b = {1}'.format(a, b))
    while b > 0:
        a, b = b, a % b
    return a
コード例 #3
0
 def parse(linea: list[str]) -> Estacion:
     name, slots, empty_slots, free_bikes, longitude, latitude = linea
     checkArgument('_' in name, '{0} no contiene _'.format(name))
     numero, name = name.split("_")
     numero = int(numero)
     slots = int(slots)
     empty_slots = int(empty_slots)
     free_bikes = int(free_bikes)
     ubicacion = Coordenadas2D(float(longitude), float(latitude))
     return Estacion.of(numero, name, slots, empty_slots, free_bikes,
                        ubicacion)
コード例 #4
0
 def data_of_file(fichero: str) -> Red:
     estaciones = [
         Estacion.parse(x) for x in lineas_de_csv(
             fichero, delimiter=",", encoding='cp1252')[1:]
     ]
     checkArgument(
         len(estaciones) == len({e.numero
                                 for e in estaciones}),
         'Hay numeros de estacion repetidos')
     pnc = {e.nombre_compuesto: e for e in estaciones}
     pn = {e.numero: e for e in estaciones}
     estaciones.sort()
     return Red.of(estaciones, pnc, pn)
コード例 #5
0
 def __add__(self, estacion: Estacion) -> None:
     checkArgument(
         estacion.numero not in self.por_numero,
         'El numero {} de la estacion esta repetido'.format(
             estacion.numero))
     checkArgument(
         estacion.nombre_compuesto not in self.por_nombre_compuesto,
         'El nombre compuesto {} de la estacion esta repetido'.format(
             estacion.nombre_compuesto))
     self._estaciones.append(estacion)
     pnc = {e.nombre_compuesto: e for e in self._estaciones}
     pn = {e.numero: e for e in self._estaciones}
     self._estaciones.sort()
     self._por_nombre_compuesto = pnc
     self._por_numero = pn
コード例 #6
0
 def of(numero: int, name: str, slots: int, empty_slots: int,
        free_bikes: int, ubicacion: Coordenadas2D) -> Estacion:
     checkArgument(
         slots >= 0,
         "Slots deben ser mayor o igual que cero y es {0:d}".format(slots))
     checkArgument(
         empty_slots >= 0,
         "Empty_Slots deben ser mayor o igual que cero y es {0:d}".format(
             empty_slots))
     checkArgument(
         free_bikes >= 0,
         "Free_Bikes deben ser mayor o igual que cero y es {0:d}".format(
             free_bikes))
     return Estacion(numero, name, slots, empty_slots, free_bikes,
                     ubicacion)
コード例 #7
0
 def of(latitud:float,longitud:float,altitud:float) -> Coordenadas3D:
     checkArgument(-90<=latitud and latitud<=90,  
                   f'latitud {latitud} no es correcta')
     checkArgument(-180<=longitud and longitud<=180, 
                   f'logitud {longitud} no es correcta')
     return Coordenadas3D(latitud,longitud,altitud)
コード例 #8
0
 def velocidad(self) -> float:
     checkArgument(
         self.tiempo > 0,
         'El tiempo debe ser mayor que cero y es {0}'.format(self.tiempo))
     return self.longitud / self.tiempo
コード例 #9
0
 def of(principio: Marca, fin: Marca) -> Intervalo:
     checkArgument(principio <= fin,\
                   'Principio={0}, fin={1}'.format(principio,fin))
     return Intervalo(principio, fin)
コード例 #10
0
 def __init__(self, n:int, d:int=1):
     checkArgument(d != 0,'El denominador no puede ser cero')
     self._numerador = n
     self._denominador = d
     self.__normaliza()
コード例 #11
0
def encoding(file: str) -> str:
    checkArgument(existe_fichero(file), 'El fichero {} no existe'.format(file))
    with open(file, "rb") as f:
        data = f.read()
        enc = chardet.detect(data)
        return enc['encoding']
コード例 #12
0
def read(file: str, encoding: str = 'utf-8') -> str:
    checkArgument(existe_fichero(file), 'El fichero {} no existe'.format(file))
    with open(file, "r", encoding=encoding) as f:
        texto = f.read()
        return texto
コード例 #13
0
def lineas_de_fichero(file: str, encoding='utf-8') -> list[str]:
    checkArgument(existe_fichero(file), 'El fichero {} no existe'.format(file))
    with open(file, encoding=encoding) as f:
        lineas_de_fichero = [linea.rstrip('\n') for linea in f]
        return lineas_de_fichero
コード例 #14
0
def lineas_iterable(file: str, encoding: str = 'utf-8') -> Iterable[str]:
    checkArgument(existe_fichero(file), 'El fichero {} no existe'.format(file))
    with open(file, "r", encoding=encoding) as f:
        for line in f:
            yield line.strip()