#-------------------------------P1------------------------------------------ #filtroMenores: Lista num -> lista #esta función retorna una lista con los números menores a n #ejemplo: filtroMenores([2,3,4,5],4) entrega [2,3] def filtroMenores(L,n): lista=[] for x in L: if x < n: lista = lista + [x] return lista assert filtroMenores([2,3,4,5],4)==[2,3] assert filtroMenores([1,2,3,4],0)==[] assert filtroMenores([],1)==[] #modificar: lista num num -> None #modifica una lista, a los numeros pares les suma n1 y a los impares les resta n2 #ej: modificar([1,2],1,2) modifica la lista y la deja en [2,0] #NOTA: contamos una lista iniciando de 0, no de 1 por eso el primer elemento es par def modificar(L,n1,n2): for i in range(len(L)): if i%2==0: L[i] += n1 else: L[i] -=n2 l_test = [1,2] modificar(l_test,1,2) assert l_test == [2,0] #unir: lista lista -> lista #une dos listas sin repeticiones #ejemplo: unir([1,2,3],[3,4,5]) retorna [1,2,3,4,5] def unir(l1,l2): final = l1 #tomamos de a uno los valores de l2 for x in l2: #ahora comparamos con los elementos de la l1 lever = 0 for y in l1: if x == y: #indica que si estaba lever = 1 break #en esta altura, ya comparamos el x en toda la lista l1 if lever != 1: final += [x] lever = 0 return final assert unir([1,2,3],[3,4,5]) == [1,2,3,4,5] #maximo: lista -> num #entrega el valor máximo de una lista #ejemplo: maximo([1,2,3,4,1010101,2]) entrega 1010101 def maximo(L): maxi=None for x in L: if maxi == None: maxi = x elif maxi < x: maxi = x return maxi assert maximo([1,2,3,4,1010101,2]) == 1010101 assert maximo([]) == None #------------------------------P2---------------------------------------------- #separarPalabras: str -> lista #entrega una lista con las palabras separadas #ejemplo: separarPalabras("hola que tal amigo") entrega #["hola","que","tal","amigo"] def separarPalabras(pal): lista_final = [] palabra = "" for x in pal: if x != " ": palabra += x elif x == " " and palabra != "": lista_final += [palabra] palabra = "" if palabra != "": lista_final += [palabra] return lista_final assert separarPalabras("hola que tal") == ["hola","que","tal"] #--------------------------------P3------------------------------------------ #calcular: str -> num #calcula una expresión #ejemplo: calcular("1 + 2 - 4 + 5") entrega 4 def calcular(word): operaciones= separarPalabras(word) while (len(operaciones)>=3): valor1 = operaciones.pop(0) simbolo = operaciones.pop(0) valor2 = operaciones.pop(0) if simbolo == "+": resultado = int(valor1)+int(valor2) elif simbolo == "-": resultado = int(valor1)-int(valor2) operaciones = [str(resultado)] + operaciones return int(operaciones[0]) assert calcular("1 + 2 - 4 + 5") == 4