def lineChart(fileOut:str,title:str,nombres_de_ejes:list[str],datos:tuple[list[int],list[float]]) -> None: Preconditions.checkArgument(len(nombres_de_ejes) ==2,'Debe haber dos nombres de ejes y hay {0:d}'.format(len(nombres_de_ejes))) result = File.read('../../../resources/LineChartPattern.html') cl = ("'{0:s}'".format(x) for x in nombres_de_ejes) camposText = joining(cl, separator=",",prefix="[",suffix="]") dt = (filaLineChart(e,datos) for e in range(len(datos[0]))) dataText = joining(dt,separator=",\n",prefix="",suffix="") reglas = {"title":"'"+title+"'", "campos":camposText, "data":dataText} result = String.transform(result,reglas); File.write(fileOut,result);
def sol_ecuacion_segundo_grado(a:float,b:float,c:float) -> tuple[float,float] | tuple[complex,complex]: Preconditions.checkArgument(a>0,'El coeficiente a debe ser distinto de cero y es {0:.2f}'.format(a)) disc = b*b-4*a*c if disc >= 0 : r1 = -b/(2*a) r2 = sqrt(disc)/(2*a) s1,s2 = r1+r2,r1-r2 return (s1,s2) else : re = -b/(2*a) im = sqrt(-disc)/(2*a) s1,s2 = complex(re,im),complex(re,-im) return (s1,s2)
def of(centro: Punto2D, radio: float) -> Circulo2D: Preconditions.checkArgument( radio >= 0, 'El radio debe ser mayor o igual a cero y es {0:.2f}'.format( radio)) return Circulo2D(centro, radio)
def sol_ecuacion_primer_grado(a:float,b:float) -> float: Preconditions.checkArgument(a>0,'El coeficiente a debe ser distinto de cero y es {0:.2f}'.format(a)) return -b/a
def media(iterable:Iterable[num]) -> float: a = (0.,0) #(sum x, num elem) for e in iterable: a = (a[0]+e,a[1]+1) Preconditions.checkArgument(a[1]>0,'El iterador esta vacio') return a[0]/a[1]
def deviacion_tipica(iterable:Iterable[num]) -> float: a = (0.,0.,0) #(sum x^2, sum x, num elem) for e in iterable: a = (a[0]+e*e,a[1]+e,a[2]+1) Preconditions.checkArgument(a[2]>0,'El iterador esta vacio') return sqrt(a[0]/a[2]-(a[1]/a[2])**2)
def area_circulo(radio:float) -> float: Preconditions.checkArgument( radio>=0,'El radio debe ser mayor o igual a cero y es {0:.2f}'.format(radio)) return pi*radio**2
def longitud_circunferencia(radio:float) -> float: Preconditions.checkArgument(radio>=0,'El radio debe ser mayor o igual a cero y es {0:.2f}'.format(radio)) return 2*pi*radio
def diagonal(self,i:int,j:int) -> Vector2D: Preconditions.checkElementIndex(i, self.n); Preconditions.checkElementIndex(j, self.n); return self.vertice(i).vector_to(self.vertice(j))
def lado(self,i:int) -> Vector2D: Preconditions.checkElementIndex(i, self.n); return self.vertice(i).vector_to(self.vertice((i+1)%self.n))
def vertice(self,i)-> Punto2D: Preconditions.checkElementIndex(i, self.n) return self.vertices[i]
def of(palo, valor): Preconditions.checkArgument( valor >= 0 and valor < 14 and palo >= 0 and palo < 52, "No es posible valor = %d, palo = %d".format(valor, palo)) return Card(palo, valor)
def of_id(ide: int) -> Card: Preconditions.checkArgument(ide >= 0 and ide < 52, "No es posible {0:d}".format(ide)) palo = ide % 4 valor = ide % 13 return Card(palo, valor)