Ejercicios resueltos en python (Parte 2)

Ejercicios resueltos en python
Ejercicios resueltos en python

Dejo los ejercicios resueltos de la segunda parte, si no viste la entrada de los ejercicios, dejo el enlace para que puedan hacerlos ustedes mismo y comparemos soluciones: Ejercicios en python (Parte 2).
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 -*-
def max_in_list(lista):
    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: ")
    forin 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"

Ejercicio 8


#! /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

  1. Anónimo dice:

    para el 4 tambien puede ser:

    def 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)

    1. PythonDiario dice:

      Muy buena tu solución. No conocía la función istitle(). Saludos

    2. Javier dice:

      La solución es funcional pero no es correcta, para eso está el método isupper() que devuelve un boolean.
      Usando 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 cadenan")
      count=0
      for i in palabra:
      if i.isupper():
      count += 1
      return count

      print ("Su palabra tiene %d mayuscula/sn" %count) #Aquí se utliza %d ya que devuelve un entero

  2. manuel dice:

    Como resolver este ejercicio.
    Es 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

  3. Anónimo dice:

    otra forma de solucionar el ejercicio 5:
    def conversor(nb):
    --"""convierte binarios a decimales"""
    --sub = 0
    --for i in nb:
    ----sub *=2
    ----sub +=int(i)
    --return sub

  4. Anónimo dice:

    alguien me puede decir como convertir de Binario a hexadecimal??
    Gracias 🙂

  5. josemi dice:

    Propuesta para el ejercicio 3:

    Podemos 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

  6. Iker dice:

    Ejercicio 9:
    import 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...

  7. Unknown dice:

    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?

    1. PythonDiario dice:

      Yo lo hice convirtiendo la cadena de texto en una lista para contar las letras de cada palabra y así compararlas. Espero te sirva, Saludos.

      def 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

  8. Unknown dice:

    En el ejercicio 6 falto pasar la cadena de a_curso y la de nacimiento a numeros enteros para que se puedan restar.

    def 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

  9. Unknown dice:

    para el 7

    def 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

    1. Anónimo dice:

      pero la función se supone debe llevar una tupla como argumento o no?

  10. Anónimo dice:

    Alguna ayudita please...
    tengo 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

    1. PythonDiario dice:

      No probaste hacerlo con un diccionario? para poder asignarle un valor a cada ingrediente. Saludos

  11. Anónimo dice:

    Programa que utilice serialización debe definir una clase clientes que tenga
    cuatro 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

  12. Unknown dice:

    Para el uno me parece que es más simple lo siguiente:

    def max_in_list(x):
    a = len(x)-1
    x.sort()
    print ('El mayor es: ' + str(x[a]))

  13. Unknown dice:

    Para el ejercicio 8 encontré una solución que no requiere tanta ''ayuda'' del usuario:

    # -*- 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ó')

  14. Unknown dice:

    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:

    Escribir 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.

  15. Isabel dice:

    Este comentario ha sido eliminado por el autor.

  16. Isabel dice:

    Ejercicio 2:

    def largest(data):
    return max(data, key=lambda x: len(x))

    1. trescuatrotres dice:

      Hola! y si hay dos o mas palabras de igual longitud?

      Gracias

  17. Anónimo dice:

    Hola ayuda quisiera que de una pagina ejemplo: http://www.promo.com recorrer con una lista las subpaginas que tiene y poder encontrar las que tienen imagenes y las que no.

    Alguien podria ayudarme?

    1. PythonDiario dice:

      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
      Saludos

    2. Anónimo dice:

      Hola muchas gracias en mi trabajo lo hicieron de otra manera utilizando selenium 🙁 y si soy totalmente nueva en python.

  18. Unknown dice:

    Este comentario ha sido eliminado por el autor.

    1. Unknown dice:

      #Ejercicio 7
      #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)

  19. Unknown dice:

    Para el primer ejercicio, si todos los numeros son menores a 0, devuelve 0 aunque no este en la lista

    1. Unknown dice:

      Yo he pensado ese mismo problema del ejercicio uno.
      Una forma fácil de solucionarlo es en lugar de usar:

      inicio = 0

      usar como continente para el máximo:

      inicio = lista[0]

  20. Anónimo dice:

    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?

  21. Unknown dice:

    el ejercicio 2 lo resolvi muy parecido:

    vectores=["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)

  22. Nerto dice:

    En el ejercicio 3 se puede hacer que devuelva la lista filtrada así:

    def filtrar_palabras(lista, num):
    listaFiltrada = []
    for i in lista:
    if len(i) > num:
    listaFiltrada.append(i)
    return listaFiltrada

  23. Anónimo dice:

    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.

  24. Unknown dice:

    Soy nuevo en python y tus problemas me han parecido excelentes, mando como resolví el 9 pero enumurando por separado cada vocal:
    def 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")

  25. Anónimo dice:

    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])

    Inicio 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:]

  26. Unknown dice:

    el ejercicio 1 tenia errores. creo que esta bien así:
    def max_in_lista(lista):
    inicio=0
    while inicio==0:
    for i in lista:
    if i>inicio:
    inicio=i
    return inicio

  27. olaya dice:

    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

  28. William_Molina dice:

    Que son los codigos al principio de cada solicion que inician con #

    1. Unknown dice:

      Comentarios

  29. Julio Cesar dice:

    Hola a todos esta seria la manera en la cual resolví el ejercicio 2:

    def 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....

  30. Anónimo dice:

    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

  31. Mario C dice:

    Hola, gracias por compartir los ejercicios.
    Para 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.

  32. Alex Magnus Raskolnikov dice:

    Yo resolví de la siguiente forma el ejercicio #3:

    def 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)

  33. Lenin dice:

    Ejercicio 9:

    palabra = str(input('¿Cuál es la palabra? '))

    def contar_vocales(palabra):
    palabraNew = palabra.lower()
    a = palabraNew.count('a')
    e = palabraNew.count('e')
    i = palabraNew.count('i')
    o = palabraNew.count('o')
    u = palabraNew.count('u')

    if a > 0:
    print('Hay', a, 'caracter(es) "a"')
    if e > 0:
    print('Hay', e, 'caracter(es) "e"')
    if i > 0:
    print('Hay', i, 'caracter(es) "i"')
    if o > 0:
    print('Hay', o, 'caracter(es) "o"')
    if u > 0:
    print('Hay', u, 'caracter(es) "u"')
    if a == 0 and e == 0 and i == 0 and o == 0 and u == 0:
    print('No hay vocales en la palabra')

    contar_vocales(palabra)

  34. junior lazaro dice:

    def mas_larga(lista):
    agregar = int(input("Cuantas String vas agregar en la lista? "))
    for i in range(agregar):
    elementos = input("Indice" +str(i)+ ": ")
    lista.insert(i,elementos)
    print(lista)
    palabra=""
    for i in lista:
    if len(i) > len(palabra):
    palabra = i
    print("La palabra con mayor longitud es:", palabra)

    lista = []
    mas_larga(lista)

  35. Pablo dice:

    ejercicio 4 sin usar funcion:

    word = input('Ingrese una palabra: ')
    con = 0
    for i in word:
    if i == i.upper():
    con += 1
    print(con)

    1. Rubén dice:

      En ese caso los espacios también los contabilizaría como "mayúsculas" y no es correcto.

  36. Pablo dice:

    La solución del ejercicio 6 no funciona de ninguna manera

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey