![]() |
Ejercicios resueltos en python |
En los primeros 10 ejercicios, vi comentarios con soluciones bastante cortas y efectivas, que me han hecho entender porque python es un excelente lenguaje de programación.
Esta bueno que comenten con sus soluciones, ya sea que sean usuarios avanzados y/o principiantes como yo.
Ejercicio 1
No aclare bien el ejercicio, por lo tanto puede ser que lo resuelvan de esta manera:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def max_in_list(lista):
return max (lista) #La función max() ya viene incorporada en python
Pero la idea es resolver la función por nosotros mismos para saber como es que funciona. Aquí la solución:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
def max_in_list(lista):
inicio = 0
for i in lista:
if i > inicio:
inicio = i
return inicio
inicio = 0
for i in lista:
if i > inicio:
inicio = i
return inicio
Ejercicio 2
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def mas_larga(lista):
mas_larga = ""
for i in lista:
if len(i) > len(mas_larga):
mas_larga = i
return mas_larga
Ejercicio 3
#! / Usr / bin / env python
# - * - Codificación: utf-8 - *
def filtrar_palabras(lista, n):
for i in lista:
if len(i) > n:
print i
Ejercicio 4
#! / Usr / bin / env python
# - * - Codificación: utf-8 - *
def c_mayusculas (cadena):
cont = 0
for i in cadena:
if i != i.lower(): #Recordar que lower() convierte una cadena en minúsculas
cont += 1
print "La cadena tiene", cont, "mayuscula/s"
Ejercicio 5
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def aDecimal(numeroBin):
numeroBin = str(numeroBin)
decimal = 0
exp = len (numeroBin) -1
for i in numeroBin:
decimal += (int(i) * 2**(exp))
exp = exp - 1
return decimal
Ejercicio 6
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def main():
a_curso = input ("Ingresa el anio en curso: ")
for i in range (3):
nombre = raw_input ("Nombre de la persona: ")
nacimiento = input ("Anio de nacimiento: ")
print nombre, "cumple", (a_curso - nacimiento), "anios en el", a_curso
Ejercicio 7
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def mayora20 (tup):
cont = 0
for i in tup:
if i > 20:
cont += 1
print "Hay", cont, "numeros mayores a 20"
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def mayora20 (tup):
cont = 0
for i in tup:
if i > 20:
cont += 1
print "Hay", cont, "numeros mayores a 20"
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def main():
x = input ("Cuantos nombres quieres ingresar?: ")
lista = []
for i in range(x):
a = raw_input ("Ingresa el nombre: ")
lista.append (a)
print ""
comienzo = raw_input ("Con que letra empieza el nombre?: ")
cont = 0
for i in lista:
if i[0] == comienzo.lower() or i[0] == comienzo.upper() :
cont += 1
return cont
Como pueden ver, el ejercicio lo hago interactuando con el usuario. También decir que uso la función append() que sirve para agregar elementos a una lista, uso la función lower() para convertir cadenas en minúsculas y uso la función upper() capara convertir caracteres o cadenas en mayúsculas.
Ejercicio 9
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def contar_vocales(cadena):
cadena = cadena.lower()
vocales = "aeiou"
for x in vocales:
contador = 0
for i in cadena:
if i == x:
contador += 1
print "Hay %d %s." % (contador, x)
Ejercicio 10
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def es_bisiesto():
print "Comprueba años bisiestos"
a = input ("Escriba un años y le dire si es bisiesto: ")
if a % 4 == 0 and (not(a % 100 == 0)):
print "El año", a, "es un año bisiesto porque es multiplo de 4"
elif a % 400 == 0:
print "El año", a, "es un año bisiesto porque es multiplo de 400"
else:
print "El año", a, "no es bisiesto"
Espero que estas soluciones les sean de guía si se trancan con algún ejercicio.
Espero sus comentarios para poder comparar las soluciones o por cualquier tipo de duda. Saludos
Espero que estas soluciones les sean de guía si se trancan con algún ejercicio.
Espero sus comentarios para poder comparar las soluciones o por cualquier tipo de duda. Saludos

para el 4 tambien puede ser:
ResponderEliminardef cuentaMayusculas():
print ("Escriba un palabra:")
palabra = raw_input()
count=0
for i in palabra:
if i.istitle():
count += 1
print ("Su palabra tiene %s mayuscula/s" %count)
Muy buena tu solución. No conocía la función istitle(). Saludos
EliminarLa solución es funcional pero no es correcta, para eso está el método isupper() que devuelve un boolean.
EliminarUsando el ejemplo de Anónimo sería:
def cuentaMayusculas():
#print ("Escriba un palabra:") # Este print está demás ya que se puede incluir en raw_input
palabra = raw_input("Ingrese una cadena\n")
count=0
for i in palabra:
if i.isupper():
count += 1
return count
print ("Su palabra tiene %d mayuscula/s\n" %count) #Aquí se utliza %d ya que devuelve un entero
Como resolver este ejercicio.
ResponderEliminarEs leer un archivo la cual contara todo las palabras y si la palabra esta repetida contar cuantas veces se repite y ponerlo en un diccionario, para ya después en listar en un archivo nuevo. con la palabra y el numero de repitiente
otra forma de solucionar el ejercicio 5:
ResponderEliminardef conversor(nb):
--"""convierte binarios a decimales"""
--sub = 0
--for i in nb:
----sub *=2
----sub +=int(i)
--return sub
alguien me puede decir como convertir de Binario a hexadecimal??
ResponderEliminarGracias :)
Propuesta para el ejercicio 3:
ResponderEliminarPodemos como argumentos de la función la lista de palabras tan larga como queramos, y al final un número que define el punto de corte para imprimir las palabras mayores a esta cifra:
####
def listado (*x):
longitud=len(x)
listilla=x[0:longitud-1]
numerador=int(x[longitud-1])
a=[]
for i in listilla:
if len(i)>=numerador:
a.append(i)
return a
Ejercicio 9:
ResponderEliminarimport re
try:
cad=str(raw_input('Dime la cadena: '))
car=str(raw_input('Dime el caracter: '))
print len(re.findall(car.lower(),cad.lower()))
except ValueError:
print "Error de valor"
No hago uso de la funcion, porque en este caso seria solo para hacer un return del print...
como resuelvo este ejercisio no me sale ¿hacer un programa que que lea una cadena y un numero entereo k y nos diga cuantas palabras tienen una longitud de k carateres?
ResponderEliminarYo lo hice convirtiendo la cadena de texto en una lista para contar las letras de cada palabra y así compararlas. Espero te sirva, Saludos.
Eliminardef lee_cadena(cadena, k):
----cont = 0
----for palabra in cadena.split():
--------if len(palabra) == k:
------------cont += 1
----return cont
print lee_cadena("esto es Python Diario", 6)
Salida:
2
En el ejercicio 6 falto pasar la cadena de a_curso y la de nacimiento a numeros enteros para que se puedan restar.
ResponderEliminardef main():
a_curso = int(input ("Ingresa el anio en curso: "))
for i in range (3):
nombre = raw_input ("Nombre de la persona: ")
nacimiento = int(input ("Anio de nacimiento: "))
print nombre, "cumple", (a_curso - nacimiento), "anios en el", a_curso
Asi si se pueden restar ya que estan convertidas en numeros en enteros
para el 7
ResponderEliminardef Mayores(tupla):
c= 0
for i in tupla:
if i > 20:
c = c+1
return c
m = "Ingrese los valores: "
n = 10
t=[int(raw_input(m))
for i in range(10)]
a =Mayores(t)
print "\n", a
pero la función se supone debe llevar una tupla como argumento o no?
EliminarAlguna ayudita please...
ResponderEliminartengo este programa que me combina unos ingredientes sin repetición, es decir, no sale arror + platano y platano + arroz. Resulta que quiero crear un programa que me diga los precios de las combinaciones... y no encuentro la manera...si alguien sabe sería de mucha ayuda!
Aquí el programa de las combinaciones:
import itertools
def pinche(ingredientes):
menu = []
for n in range(2,len(ingredientes)+1):
menu.extend(itertools.combinations(ingredientes,n))
return menu
mimenu = pinche(["angus","lobster","caviar","patatas","aguaqate","legumbres"])
for m in mimenu: print m
No probaste hacerlo con un diccionario? para poder asignarle un valor a cada ingrediente. Saludos
EliminarPrograma que utilice serialización debe definir una clase clientes que tenga
ResponderEliminarcuatro atributos definidos por Ud. luego pase al proceso de serialización importando
el módulo pickle e invocando a su función dump. Los datos deben ser serializados en
un archivo binario (este tipo es especial para la serialización).
Finalmente haga el proceso inverso deserialización invocando al método load(),
también del pickle. Debe mostrar los datos. Considere que los datos de la clase deben
ser accesibles en el mismo ámbito. este por favor
Para el uno me parece que es más simple lo siguiente:
ResponderEliminardef max_in_list(x):
a = len(x)-1
x.sort()
print ('El mayor es: ' + str(x[a]))
Para el ejercicio 8 encontré una solución que no requiere tanta ''ayuda'' del usuario:
ResponderEliminar# -*- coding: cp1252 -*-
def buscar (x):
print 'Para listar los nombres con la misma inicial,'
ing = raw_input('elija la letra a buscar: ')
lis = ''
vacio = 0
for nombres in x:
if nombres[0] == ing or nombres[0] == ing.upper():
lis=(nombres)
vacio += 1
print lis
if vacio < 1:
print ('No se encontró')
Hola tengo un programita para hacer, y estoy trabado! Estoy iniciando me en Python. Acá se los dejo por si alguno puede darme una mano:
ResponderEliminarEscribir un programa que permita ingresar las temperaturas diarias y mínimas durante todo un mes (30 días). Calcular y mostrar: a) Promedio de temperaturas mínimas y máximas. b) Amplitud térmica diaria. c) Amplitud térmica mensual. d) Imprimir cuantos días se presentan temperaturas bajo cero. e) Cuantos días la amplitud térmica es mayor a 10 grados.
Este comentario ha sido eliminado por el autor.
ResponderEliminarEjercicio 2:
ResponderEliminardef largest(data):
return max(data, key=lambda x: len(x))
Hola ayuda quisiera que de una pagina ejemplo: www.promo.com recorrer con una lista las subpaginas que tiene y poder encontrar las que tienen imagenes y las que no.
ResponderEliminarAlguien podria ayudarme?
Hola ¿Como estas? Gracias por visitar el blog. Has hecho algo? Si eres nuevo con el scraping te recomiendo que te pases por este link: Extraer datos de una web con Python y BeautifulSoup
EliminarSaludos
Hola muchas gracias en mi trabajo lo hicieron de otra manera utilizando selenium :( y si soy totalmente nueva en python.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar#Ejercicio 7
Eliminar#Definir una tupla con 10 edades de personas.
#Imprimir la cantidad de personas con edades superiores a 20.
#Puedes variar el ejercicio para que sea el usuario quien ingrese las edades.
def Older20(Tupla):
------- newTupla = () #nueva tupla donde se almacenaran las personas que son mayores de 20
for Age in Tupla:
if int(Age) > 20:
newTupla = newTupla +(Age,)
lengTuplaFinal = len(newTupla)
print("Personas Mayores de 20: ",lengTuplaFinal)
return newTupla
def Prompting(): #Funcion que permite al usuario ingresar las edades
X = () #Tupla argumento de la funcion principal
for i in range(10):
X = X + (input("Ingresa edad #" + str(i+1) + ":" ),)#El +1 solo es un detalle para organizacion
return X
main = Older20(Prompting())
print(main)
Para el primer ejercicio, si todos los numeros son menores a 0, devuelve 0 aunque no este en la lista
ResponderEliminarYo he pensado ese mismo problema del ejercicio uno.
EliminarUna forma fácil de solucionarlo es en lugar de usar:
inicio = 0
usar como continente para el máximo:
inicio = lista[0]
una duda con el ejercicio numero 3 cuando me imprime la las palabras mayores n caracteres al final siempre me regresa un None o valor null ¿porque sera?
ResponderEliminarel ejercicio 2 lo resolvi muy parecido:
ResponderEliminarvectores=["hola","electricidad","hol","xd"]
def mayor(vectores):
may=vectores[0]
larg=len(may)
for x in vectores:
largo=len(x)
if largo > larg:
may=x
return may
print "la palabra mas larga es ",mayor(vectores)
En el ejercicio 3 se puede hacer que devuelva la lista filtrada así:
ResponderEliminardef filtrar_palabras(lista, num):
listaFiltrada = []
for i in lista:
if len(i) > num:
listaFiltrada.append(i)
return listaFiltrada
Alguien podría explicarme la solución del ejercicio No. 5, no entiendo del todo porque se hacen esas operaciones, creo que es una fórmula en específica para hacerlo, pero quisiera saber más a fondo porque se hace de esa forma.
ResponderEliminarSoy nuevo en python y tus problemas me han parecido excelentes, mando como resolví el 9 pero enumurando por separado cada vocal:
ResponderEliminardef vocales(n):
contar_vocales={}
n_vocal_a = 0
n_vocal_e = 0
n_vocal_i = 0
n_vocal_o = 0
n_vocal_u = 0
for i in n:
w=i.lower()
if(w.count("a")>0):
n_vocal_a=n_vocal_a+w.count("a")
contar_vocales["a"] = n_vocal_a
if(w.count("e")>0):
n_vocal_e = n_vocal_e + w.count("e")
contar_vocales["e"] = n_vocal_e
if (w.count("i") > 0):
n_vocal_i = n_vocal_i + w.count("i")
contar_vocales["i"] = n_vocal_i
if (w.count("o") > 0):
n_vocal_o = n_vocal_o + w.count("o")
contar_vocales["o"] = n_vocal_o
if (w.count("u") > 0):
n_vocal_u = n_vocal_u + w.count("u")
contar_vocales["u"] = n_vocal_u
return contar_vocales
palabras=[]
print("Ingrese el numero de palabras:")
num=int(input())
for i in range(num):
print("Ingrese la palabra", i)
palabras.append(input())
e=vocales(palabras)
print("La vocales que se repiten", e, "veces")
La solución programada del ejercicio 1 tiene un error al inicializar la variable inicio a 0. Si la lista no tiene ningun numero superior a 0 no funcionaría, por ejemplo max_in_lista([-1,-2,-3,-4])
ResponderEliminarInicio deberia ser el primer elemento de la lista, y compararías con los siguientes, así te quitarías este error.
inicio = lista[0]
for i in lista[1:]
el ejercicio 1 tenia errores. creo que esta bien así:
ResponderEliminardef max_in_lista(lista):
inicio=0
while inicio==0:
for i in lista:
if i>inicio:
inicio=i
return inicio
Hola yo me estoy iniciando en pytho aunque se java que es parecido. En la solucion al ejercicio de las vocales hay un error: la variable contador hay que inicializarla antes del bucle, sino siempre va a dar 0
ResponderEliminarQue son los codigos al principio de cada solicion que inician con #
ResponderEliminarComentarios
EliminarHola a todos esta seria la manera en la cual resolví el ejercicio 2:
ResponderEliminardef mas_larga(list_words):
length_max = max([len(word) for word in list_words])
for word in list_words:
if len(word) == length_max:
result = word
return result
Díganme que opinan....
Hola.buenas.consulta!!!. Soy novata en Python. Tengo que hacer una función que reciba una una tupla de otra función y la convierta en lista. Y retorne en lista.podran guiarme? Python 2.7
ResponderEliminarHola, gracias por compartir los ejercicios.
ResponderEliminarPara el ejercicio uno sugiero lo siguiente:
def maxlista(lista):
n=lista[0]
for i in lista:
if i>n:
n=i
return n
Ya que allí está considerado para números negativos.
Espero sus comentarios.
Saludos.
Yo resolví de la siguiente forma el ejercicio #3:
ResponderEliminardef filtrar_palabras(lista,n):
aux = []
for i in lista:
if len(i)>=n:
aux.append(i)
return print(aux)
filtrar_palabras(['red', 'green', 'black','abcdefghijk','lmnopqrs'],5)