Google+ Seguidores

jueves, 6 de junio de 2013

Ejercicios resueltos en python (Parte 2)

    23

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

23 comentarios:
Write comentarios
  1. 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)

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

      Eliminar
    2. 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 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



      Eliminar
  2. 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

    ResponderEliminar
  3. 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

    ResponderEliminar
  4. alguien me puede decir como convertir de Binario a hexadecimal??
    Gracias :)

    ResponderEliminar
  5. 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

    ResponderEliminar
  6. 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...

    ResponderEliminar
  7. 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?

    ResponderEliminar
    Respuestas
    1. 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

      Eliminar
  8. 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

    ResponderEliminar
  9. 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

    ResponderEliminar
  10. 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

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

      Eliminar
  11. 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

    ResponderEliminar
  12. 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]))

    ResponderEliminar
  13. 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ó')

    ResponderEliminar
  14. 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.

    ResponderEliminar
  15. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  16. Ejercicio 2:

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

    ResponderEliminar
  17. 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.

    Alguien podria ayudarme?

    ResponderEliminar
    Respuestas
    1. 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

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

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.