Temas vistos en los ejercicios de esta semana:
- Funciones
- Ciclos
- Comparaciones
- Listas
Escribir un código que tome una lista de cadenas y que imprima la cadena más larga de la lista.
strings = ['Flor', 'Nacho', 'Momi', 'Leuco', 'Occhiato']
def longerString(list):
longer = ''
for string in list:
if len(string) > len(longer):
longer = string
print(f'The longer string is {longer}')
longerString(strings)
Escribir un código que tome dos listas como entrada y que cree una nueva lista conteniendo sólo los elementos en común que están en las dos listas. Nota: no te preocupes por el tema de que pueden haber elementos duplicados en las listas.
list1 = ['Flor', 'Nacho', 'Momi', 'Leuco', 'Occhiato']
list2 = ['Manu', 'Flor', 'Mar', 'Tini', 'Leuco']
def repeatedElements(list1, list2):
list = []
for string1 in list1:
for string2 in list2:
if(string1 == string2):
list.append(string1)
return list
new_list = repeatedElements(list1, list2)
print(new_list)
Escribir un programa que imprima los primeros diez números de la sucesión de Fibonacci. La sucesión de Fibonacci es una secuencia de números donde cada elemento es la suma de los dos anteriores, y se comienza con el 0 y el 1.
def secuenciaFibonacci():
base = [0, 1]
serie = []
for i in range(10):
if i in base:
serie.append(i) # el cero y el uno son los primeros de la lista
else: # "cada elemento es la suma de los dos anteriores"
f = serie[-2] + serie[-1] # Tomo el último y anteúltimo valor contando desde atrás con -1, -2
serie.append(f)
print(serie)
secuenciaFibonacci()
Escribir un programa que tome una cadena como entrada y cuente la cantidad de vocales que hay en ella.
def numberOfVocals(str):
str = str.lower()
vocals = 0
for s in str:
if(s=='a' or s=='e' or s=='i' or s=='o' or s=='u'):
vocals+=1
print(f'{str} has {vocals} vocals')
numberOfVocals('VAlentina')
Escribir un programa que tome una lista de palabras (cadenas) y que imprima sólo aquellas que son palíndromos.
strings = ['world', 'radar', 'level', 'sky', 'kayak', 'madam']
def palindrome(list):
palindromeList = []
for string in list:
if(string == string[::-1]):
palindromeList.append(string)
if len(palindromeList) > 0:
print(palindromeList)
else:
print("None of the strings in the list is a palindrome")
palindrome(strings)
El siguiente código tiene un problema. ¿Podés identificar cuál es y corregirlo?
def oddOrEven(number):
if (number % 2) == 1:
print(f'{number} is odd')
elif (number % 2) == 0:
print(f'{number} is even')
if (number % 2) != 0 and (number % 2) != 1:
print(f'{number} is not even or odd')
oddOrEven(10)
oddOrEven(6.5)
El siguiente código también tiene un problema. ¿Podés identificar cuál es y corregirlo?
def hasAnA(string):
string = string.lower()
hasAnA = 0
for s in string:
if (s == 'a'):
hasAnA = 1
if hasAnA:
print(f'\"{string}\" has an \"a\"') # \"\"
else:
print(f'\"{string}\" doesnt have an \"a\"') # \"\"
hasAnA('Cocos')
hasAnA('Valen')
FizzBuzz es un juego de palabras grupal para que los niños aprendan sobre la división, pero se suele usar como un ejercicio clásico de programación. En el juego los jugadores se turnan para contar de forma incremental, reemplazando cualquier número divisible por tres con la palabra "fizz", y cualquier número divisible por cinco con la palabra "buzz", y cualquier número divisible por 3 y 5 con la palabra "fizzbuzz". Hace un programa que imprima los números del 1 al 30, pero reemplazando los múltiplos de 3 y/o 5 por "fizz", "buzz" ó "fizzbuzz" siguiendo las reglas del juego.
def FizzBuzz():
list = []
for i in range(1, 30):
if (i % 3) == 0 and (i % 5) == 0:
list.append('fizzbuzz')
elif (i % 3) == 0:
list.append('fizz')
elif (i % 5) == 0:
list.append('buzz')
else:
list.append(i)
print(list)
FizzBuzz()
En base a las listas ficticias de alumnos, con datos como nombre, apellido, y nota (calificación). Escribir un programa que:
- Imprima la nombre y apellido de los alumnos de manera ordenada alfabéticamente por el apellido
- Calcule el promedio de notas de la cursada, e informe la nota máxima y la mínima.
- Genere una variable llamada "aprobados" con una lista de alumnos aprobados (se aprueba con 7)
- Genere una variable (lista) conteniendo valores booleanos (True/False), que corresponda a los alummnos aprobados (True) o desaprobados (False) NOTA: el orden de las listas es el mismo, vale decir, la nota de Laura Pérez es 7, y asi sucesivamente.
nombres = ['Laura', 'Juan', 'Tomás', 'Ana', 'Diego', 'Carla', 'Kim', 'Sofía']
apellidos = ['Pérez', 'Isla', 'Gómez', 'Castro', 'Roca', 'Romero', 'Díaz', 'López']
notas = [7, 4, 9, 5, 7, 8, 6, 10]
#nombre y apellido
def concatenate(names, lastNames):
namesList = []
for i in range(len(names)):
completeName = lastNames[i] + ', ' + names[i]
namesList.append(completeName)
return namesList
list = concatenate(nombres, apellidos)
print(sorted(list))
#promedio, max y min
def promedio(list):
length = len(list)
suma = 0
min = 10
max = 0
for nota in list:
suma+=nota
if(nota > max):
max = nota
if(nota < min):
min = nota
print(f'El promedio de la cursada es {suma / length}')
print(f'El maximo es {max} y el minimo es {min}')
promedio(notas)
#lista aprobados
def aprobados(notas, nombres):
aprobados = []
i = 0
for nota in notas:
if(nota >= 7):
aprobados.append(nombres[i])
i+=1
print(aprobados)
aprobados(notas, nombres)
#lista booleanos
def aprobadosBooleanos(notas):
aprobados = []
i = 0
for nota in notas:
if(nota >= 7):
aprobados.append(True)
else:
aprobados.append(False)
i+=1
print(aprobados)
aprobadoBoolean = aprobadosBooleanos(notas)
Una pelota de goma es arrojada desde una altura de 100 m y cada vez que toca el piso salta 3/5 de la altura desde la que cayó. Escribí un programa que imprima una tabla mostrando las alturas que alcanza en cada uno de sus primeros diez rebotes.
h = 100
for i in range(10):
h = round(h * 3/5, 4)
print(h)
Jeringoso simple. Usá una iteración sobre el string cadena para agregar la sílaba 'pa', 'pe', 'pi', 'po', o 'pu' según corresponda luego de cada vocal.
palabra = input('Ingrese una palabra: ')
palabra = palabra.lower()
palabra_nueva = ''
for letra in palabra:
palabra_nueva += letra
if letra in "aeiouáéíóú":
palabra_nueva += 'p' + letra
print(palabra_nueva)
Meses y días. Crea un programa que pida un número de mes (por ejemplo, el 4) y diga cuántos días tiene (por ejemplo, 30) y el nombre del mes. Debes usar listas. Para simplificarlo vamos a suponer que febrero tiene 28 días.
meses = [
['Enero', 31],
['Febrero', 28],
['Marzo', 31],
['Abril', 30],
['Mayo', 31],
['Junio', 30],
['Julio', 31],
['Agosto', 31],
['Septiembre', 30],
['Octubre', 31],
['Noviembre', 30],
['Diciembre', 31]
]
mes = int(input('Ingrese numero de mes: '))
mes -= 1
print(f'El mes {mes+1} es {meses[mes][0]} y tiene {meses[mes][1]} dias')
Supongamos que la población del país A es del orden de 75000 habitantes con una tasa de crecimiento anual del 4% y la población del país B es de 230000 habitantes con una tasa de crecimiento del 1,2%. Haz un programa que calcule y escriba el número de años necesarios para que la población del país A supere o iguale a la población del país B, tasas de crecimiento mantenidas.
poblacionA = 75000
poblacionB = 230000
tasaA = 4 / 100
tasaB = 1.2 / 100
years = 0
while(poblacionA < poblacionB):
poblacionA += poblacionA * tasaA
poblacionB += poblacionB * tasaB
years+=1
print(f'La poblacion A tiene {round(poblacionA)} habitantes y la B {round(poblacionB)} \nTardo {years} años en superar o igualar la A a la B')
Notas. Las notas obtenidas en por el alumno A durante su cursada fueron: 8, 7, 7, 6, 9, 10, 8, 9. El alumno B obtuvo las siguientes notas: 9, 8, 8, 9, 5, 8, 9, 7. Realizar un programa que calcule la nota media y que muestre quien sacó la nota mayor y quien sacó la nota menor.
alumnoA = [8, 7, 7, 6, 9, 10, 8, 9]
alumnoB = [9, 8, 8, 9, 5, 8, 9, 7]
def promedio(notas):
suma = 0
i = 0
for nota in notas:
suma+=nota
i+=1
return suma/i
if(promedio(alumnoA) > promedio(alumnoB)):
print(f'El alumno A tiene mayor nota con un promedio de {promedio(alumnoA)}\nEl alumno B tiene {promedio(alumnoB)} de promedio')
else:
print(
f'El alumno B tiene mayor nota con un promedio de {promedio(alumnoB)}\n El alumno A tiene {promedio(alumnoA)} de promedio')
- Crea una lista con los números del 1 al 10.
- Imprime los elementos en las posiciones 3, 4 y 5 utilizando slices.
- Imprime los elementos en las posiciones 2, 4, 6 y 8 utilizando slices. !
- Crea una nueva lista que contenga los elementos de la lista original en orden inverso utilizando slices. !
- Reemplaza los elementos en las posiciones 2, 3 y 4 con los números 20, 30 y 40 utilizando slices.
list = []
for i in range(1, 11):
list.append(i)
print(list)
print(list[3:6])
#print(list[1:8])
print(sorted(list, reverse=True))
list[2:5] = [20,30,40]
print(list)
Supongamos que tenemos una lista de números enteros, y queremos encontrar todas las subsecuencias de la lista que sumen un número objetivo dado. Para hacerlo, vamos a crear una función que tome como argumentos la lista de números y el número objetivo, y devuelva una lista con todas las subsecuencias que suman el número objetivo. Ayuda: Por ejemplo, si le damos a tu programa la lista de números [1, 2, 3, 4, 5] y queremos encontrar todas las subsecuencias que suman 7 (número objetivo dado), la función debería devolver las siguientes listas [2, 5], [3, 4], [1, 2, 4].
numeros = [1, 2, 3, 4, 5]
def subsecuenciasSuma(lista, objetivo):
subsecuencias = []
leng = len(lista)
print(leng)
for num in lista:
for i in range(num, leng+1):
if (num + i) == objetivo:
subsecuencias.append([num, i])
elif (num + i) < objetivo:
if(num + i + (i+1)) == objetivo:
subsecuencias.append([num, i, i+1])
return subsecuencias
print(subsecuenciasSuma(numeros, 7))