Google+ Seguidores

lunes, 27 de mayo de 2013

Ejercicios en python (Parte 1)

    50

Voy a dejar algunos ejercicios en python. Si hay alguna dificultad no duden en

ejercicios en python
Ejercicios Python
comentar. También voy a crear un post con mis soluciones, ustedes pueden aportar las suyas.

1- Definir una función max() que tome como argumento dos números y devuelva el mayor de ellos. (Es cierto que python tiene una función max() incorporada, pero hacerla nosotros mismos es un muy buen ejercicio.

2- Definir una función max_de_tres(), que tome tres números como argumentos y devuelva el mayor de ellos.

3- Definir una función que calcule la longitud de una lista o una cadena dada. (Es cierto que python tiene la función len() incorporada, pero escribirla por nosotros mismos resulta un muy buen ejercicio.

4- Escribir una función que tome un carácter y devuelva True si es una vocal, de lo contrario devuelve False.

5- Escribir una funcion sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista. Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24.

6- Definir una función inversa() que calcule la inversión de una cadena. Por ejemplo la cadena "estoy probando" debería devolver la cadena "odnaborp yotse"

7 - Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas), ejemplo: es_palindromo ("radar") tendría que devolver True.

8- Definir una función superposicion() que tome dos listas y devuelva True si tienen al menos 1 miembro en común o devuelva False de lo contrario. Escribir la función usando el bucle for anidado.

9- Definir una función generar_n_caracteres() que tome un entero n y devuelva el caracter multiplicado por n. Por ejemplo: generar_n_caracteres(5, "x") debería devolver "xxxxx".

10- Definir un histograma procedimiento() que tome una lista de números enteros e imprima un histograma en la pantalla. Ejemplo: procedimiento([4, 9, 7]) debería imprimir lo siguiente:

****
*********
*******

Bueno, con estos 10 ejercicios en python tenemos para entretenernos un rato, cualquier duda no dudes en dejar comentarios.

Aquí están las soluciones: Ejercicios resueltos en python (Parte 1)

50 comentarios:
Write comentarios
  1. Están bien para empezar un Lunes activo!

    ResponderEliminar
    Respuestas
    1. Nada mejor que arrancar un lunes desayunando código python.

      Eliminar
  2. ¡Hola! Hace poco empecé a estudiar por mi cuenta Python y me he enamorado de este lenguaje de programación. Realmente se programa diferente a otros lenguajes, además de que el código es mas claro y corto. Ahora, justo cuando pensaba en que los tutoriales de Python deberían tener problemas propuestos y su solucionario, veo tu post en G+ con estos 10 ejercicios. :D

    mmmmmm tengo un problema con el último punto. Para hacer el "histograma horizontal" utilizo la función del noveno punto (generar_n_caracteres). Y funciona :D pero al final me imprime un None. ¿Por qué aparece este None y como hago que mi función no lo imprima? ¿Escribo estas funciones o espero el post de respuestas?

    ResponderEliminar
    Respuestas
    1. El valor none en python:
      Valor especial de Python que es devuelto por funciones que no tienen la sentencia return o la tienen sin argumento. El valor None es el único valor del tipo NoneType.
      Yo todavía no he hecho este ejercicios, en estos días plateo las soluciones mías para compararlas con las de ustedes.
      Me alegro mucho de que te hallan gustado los ejercicios, iré posteando todas las semanas.

      Eliminar
  3. hola. yo trabajo con python en maya. pero hice algunos script dentro de maya pero fuera de maya no estoy familiarizado. voy a intentar tus ejercicios cuando tenga un tiempo. ayuda mucho esto que haces te felicito. cualquier duda te pregunto. saludos de argentina.

    ResponderEliminar
  4. Pablo: no conozco maya, voy a ver de que se trata. Me alegro de que ayuden los ejercicios, es la idea. Saludos y espero tengas tiempo de hacer los ejercicios.

    ResponderEliminar
  5. interesante los resolvere para practicar lo que apenas aprendi de python :)

    ResponderEliminar
    Respuestas
    1. Hola Jesús. Animo que estos ejercicios están muy buenos. Espero tus soluciones. Saludos

      Eliminar
  6. por favor me pueden ayudar con este programa que no lo entiendo.
    En una ciudad se conocen los siguientes datos de los ciudadanos: Nombres, Apellidos, Edad, C.I., Sexo, Estado Civil, Nacionalidad. Si el sexo es masculino se conoce si tiene pies planos o no y si ha prestado servicio militar. Se desea que diseñe una estructura de datos para almacenar esta información. Además se pide un programa que permita las siguientes operaciones: a) listar toda la población que puede votar en las próximas elecciones, b) listar aquellos ciudadanos que pueden prestar servicio militar.

    ResponderEliminar
  7. primer ejercicio :)

    def mayor(num1,num2):
    if num1>num2:
    return num1
    else:
    return num2

    numero1 = input("Ingrese un numero")
    numero2 = input("Ingrese el otro numero")

    print "El mayor es",mayor(numero1,numero2)

    ResponderEliminar
    Respuestas
    1. segundo ejercicio :)

      def mayor_tres(num1,num2,num3):
      lista = [num1,num2,num3]
      mayor = lista[0]
      for i in range(1,len(lista)):
      if mayor < lista[i]:
      mayor = lista[i]
      return mayor

      numero1 = input("Ingrese un numero")
      numero2 = input("Ingrese el segundo numero")
      numero3 = input("Ingrese el tercer numero")

      print "El mayor es",mayor_tres(numero1,numero2,numero3)

      Eliminar
    2. saludos emilio pero al parecer hay un error en tu ejercicio, lo pracique y pude ver que cuando el bucle for llega al num2 y si este es mayor que el num1 evita probar el num3, solo es efectivo si el num2 es menor que num1 ya que sige el bucle y prueba el num3 gracias

      Eliminar
    3. jtk...puede que el return no esté a identado a la altura del for

      Eliminar
  8. Ejercicio Python
    Hola

    Soy nuevo en esto de la programación y no se como hacer el siguiente ejercicio:

    "Escribe en Python un programa, el cual pide al usuario una secuencia de números reales y enseñe en la pantalla el tamaño de dicha secuencia. Recuerda que eso se mostrará cuándo el usuario escriba la cadena de caracteres "TERMINAR" Ejemplo:
    Escribe un número rea: 4
    Escribe un número real:5
    Tamaño de la secuencia: 2
    Haz lo mismo para que muestre el valor medio de los números y a continuación la suma de los números."

    Supongo que hay que utilizar el código str por lo de la secuencia. ¿Alguien sabe resolver este básico ejercicio? Es el
    primero al que me enfrento para nota y estoy un poco perdido... Gracias.

    ResponderEliminar
    Respuestas
    1. Hice algo medio desordenado, pero quizá te pueda ayudar....

      def dato():
      ----#Primera parte
      ----lista = []
      ----x = ""
      ----while x != "terminar" and x != "TERMINAR":
      --------lista.append(x)
      --------x = raw_input ("Escribe un numero real: ")

      ----del lista[0] #Borra elemento vacio
      ----tamano = len(lista)
      ----print u"Tamaño de la secuencia: ", tamano

      ----#Segunda parte, calculo de la media de los numeros
      ----lista_enteros = []

      ----cont = 0

      ----#Los elementos de la lista (lista) son cadenas porque fueron tomados
      ----#con raw_input, por lo tanto tengo que convertirlos a enteros
      ----#para poder hacer cuentas
      ----for i in lista:
      --------cont += 1
      --------i = int(i)
      --------lista_enteros.append(i)

      ----cont = float(cont)
      ----suma = 0

      ----for i in lista_enteros:
      --------suma += i

      ----valor_medio = suma/cont


      ----print "El valor medio de los numeros es: ", valor_medio

      ----#Tercera parte, suma de los numeros

      ----print "La suma de los numeros es: ", suma


      dato()

      Eliminar
  9. Gracias por las propuestas. Están muy bien para entretenerse y aprender.
    Saludos-.

    ResponderEliminar
  10. Yo estoy comenzando en este lenguaje... en mis tiempos de estudiante trabajamos mucho con turing, un lenguaje a mi gusto potente y facil y python me trajo mucho recuerdos por su sencillas y potencia... Gracias por los ejercicios.

    ResponderEliminar
    Respuestas
    1. Hola Carlos, me alegro que te gusten los ejercicios y te metas en el mundo Python. Saludos

      Eliminar
  11. como hacer un programa en python que de una lista me imprima solo los numeros pares.
    gracias

    ResponderEliminar
  12. Hola, que tal? Estoy teniendo problemas en la segunda parte de un ejercicio de cadenas y me gustaría que me echaras una mano. Te escribo el enunciado y lo que tengo hecho (la primera parte me funciona).

    - Si todos los caracteres son dígitos, se ha de indicar cuántos son y cuál es su suma.

    - En caso contrario, ha de mostrarse el primer carácter encontrado que no sea dígito e indicar en qué posición se encontró.

    Ejemplo:
    Introduce una cadena de caracteres: 12481632641282565121024
    Todos los caracteres son dígitos.
    ¿Cuántos dígitos? 23
    ¿Suma de dígitos? 76

    Y otro (este es el que no me aclaro):
    Introduce una cadena de caracteres: 000123456789X1112y13
    Primer "no dígito": ’X’ en posición 12

    Lo que tengo hecho:
    cadena = input('Introduce una cadena de caracteres: ')
    abecedario = 'abcdefghijklmnñopqrstuvwxyzáéíóúü.,'
    letras = 0
    númeroDeDigítos = len(cadena)
    contar = 0
    posición = 0
    for dígito in cadena:
    if dígito.lower() in abecedario:
    letras += 1

    if letras != 0:
    print('No todos los caracteres son dígitos')

    if letras == 0:
    for i in range (len(cadena)):
    contar += int(cadena[i])
    print('Todos los caracteres son dígitos')
    print('¿Cuántos dígitos? {0}'.format(númeroDeDigítos))
    print('¿Suma de dígitos? {0}'.format(contar))

    Gracias.

    ResponderEliminar
    Respuestas
    1. Llegué casi 2 años tarde pero acá está:

      def problema(cadena):
      > if cadena.isdigit() is True:
      >> print "Todos los caracteres son digitos"
      >> print "Cantidad de digitos:", len(cadena)

      >> lista_cadena = map(lambda n: int(n), list(cadena))
      >> suma = 0

      >> for numero in lista_cadena:
      >>> suma += numero

      >> print "Suma de los digitos:", suma

      > else:
      >> print "Hay almenos un caracter no numerico"

      >> for caracter in cadena:
      >>> if caracter not in "0123456789":
      >>>> caracter_encontrado = caracter
      >>>> break

      >> print "Primer caracter encontrado:", caracter_encontrado
      >> print "Posicion en la que se encontro:", cadena.find(caracter_encontrado) + 1

      problema(raw_input("Introduzca una cadena de caracteres: "))

      Eliminar
  13. Respuestas
    1. Hola Carlos, por lo que veo estas trabajando con python 3.x. Yo hice un ejemplo con python 2.7. Creo que le estas dando mucha vuelta al asunto. Dejo mi solucion y si no entiendes algo me lo comentas (el sangrado lo hago con 4 guiones):

      var = raw_input("Introduce una cadena de caracteres: ")
      list = []

      for i in var:
      ----if i in "0123456789": #Si i es un numero hace lo siguiente:
      --------i = int(i)
      --------list.append(i)
      ----else: # Si i no es un numero
      --------a = var.index(i) # Posicion del i que no es numero
      --------print "No todos los caracteres son dígitos"
      --------print i # Imprime el caracter que no es numero
      --------print a + 1 # a es la posicion y sumamos uno porque arranca a contar de 0
      --------exit() # Salimos del programa

      # Esto lo hace si se cumple el if
      print "Cantidad de digitos:", len(list)
      a = 0
      for i in list:
      ----a += i

      print "Suma de digitos:", a

      Eliminar
  14. Hola, muchas gracias por la respuesta. Se podría resolver sin utilizar las listas? Es que en este ejercicio no puedo utilizar listas.

    Un saludo y gracias!

    ResponderEliminar
    Respuestas
    1. Si, podrías poner un contador. Mientras se cumpla que sea un digito vaya contando cuantos digitos hay. Y para sumar los digitos podrias crear una variable que mientras sea un digito vaya sumando los digitos. Saludos

      Eliminar
  15. Por favor necesito ayuda con tres ejercicios de python. jesusveratriguero@hotmail.com

    ResponderEliminar
    Respuestas
    1. Hola Niko, has podido hacer algo de los ejercicios? Estaría bueno que los plantearas para ver de que se tratan. Saludos

      Eliminar
  16. hola tengo que resolver un ejercicio y no lo entiendo muy bien, desde ya muchas gracias el que pueda contestarme. Es bastante urgente.

    Queremos hacer un programa que calcule el factorial de un número entero positivo.

    El factorial de n se denota con n!, pero no existe ningún operador Python que permita efectuar este cálculo directamente.

    Sabiendo que:

    n! = 1 * 2 * 3 * . . . * (n − 1) * n

    y que 0! = 1, haz un programa que pida el valor de n y muestre por pantalla el resultado de calcular n!

    ResponderEliminar
    Respuestas
    1. Hola, como ayuda te puedo decir que el factorial se calcula así:
      Formula de factorial
      Factorial de 5 = 1 x 2 x 3 x 4 x 5 = 120
      Factorial de 3 = 1 x 2 x 3 = 6
      Podrías utilizar un for para que vaya multiplicando y guardando el resultado.
      Saludos

      Eliminar
    2. Es que si entiendo que eso es el factorial pero lo que no entiendo es como lo escribo en python porque lo escribi de una manera que no me salio. Realmente soy muy mala con este programa, seria de mucha ayuda si me ayudaras a saber como escribirlo.

      Eliminar
    3. Lo que yo habia echo hasta ahora era esto pero me da error


      n=int(raw_input('Introduce un número: '))
      i=1
      n!=1*2*3*...*n
      while i<=n:
      factorial*= i
      i+=1
      print 'El factorial de,', n, 'es:',n!

      Eliminar
    4. Lo primero que haces esta bien para guardar en n el numero para realizar el factorial. Seguido de eso, crea una variable llamada factorial que sea igual a 1. Luego tendrías que colocar tres condicionales (if, elif y else).
      El primer if es para ver si el numero ingresado es menor a 0 (si es el caso dar un mensaje de error), el elif es para ver si el numero es igual a 0 (en ese caso desplegar un mensaje que diga que el factorial de 0 es 1) y por último (si se pasan estas dos condiciones) creamos el else con la formula del factorial:
      for i in range(1, n+1):
      factorial = factorial * i

      Esto hace que se multiplique desde el 1 hasta el número deseado.
      Esper puedas armarlo de forma correcta
      Saludos, Diego

      Eliminar
    5. Muchisimas gracias.

      Eliminar
  17. Una agencia de modelos solicita nuevos candidatos para incorporar a la empresa. No especifica ningún requisito. Los datos que se cargan son: nombre, sexo, altura, color de ojos y color de cabello. El alta de datos finaliza cuando en vez del nombre se ingresa la palabra fin. Una vez terminada la carga se almacenan por un lado las personas cuya altura esté entre 1.70 y 1.80 y se cuentan las mujeres rubias de ojos verdes. Finalmente se muestran los nombres y el promedio de altura del primer grupo y la cantidad de personas del segundo grupo.

    personas: juan-m-1.78-marrón-castaño/pedro-m-1.68-marrón-castaño/julia-f-1.71-verde-rubio/ana-f-1.65-verde-rubio/josé-m-1.90-verde-rubio/camila-f-1.73-verde-rubio/laura-f-1.63-verde-rubio/sara-f-1.69-celeste-rubia


    Si bien es obligatorio programar la carga, a los fines de la prueba de escritorio pueden copiar y pegar los datos suministrados, siempre considerando que es un ejemplo y no los únicos datos posibles. Además, se aclara que el formato de entrada y almacenamiento de los datos tampoco debe ser el que se muestra aquí, pueden usar las estructuras que les sean más cómodas.

    La salida que se muestre por pantalla, será como la siguiente (esto en el caso de usar los datos suministrados):

    La altura promedio del primer grupo es: 1.74 y sus nombres son juan julia camila
    La cantidad de personas del segundo grupo es: 4

    necesito ayuda

    ResponderEliminar
  18. Aqui la solución de mis ejercicios como todo un niño bueno :) jaja
    -- Aclaración el metodo len() fue el me costo algo de trabajo hacer no tenia idea

    '''
    Created on 28/9/2015

    @author: manu
    '''

    from math import *
    from string import *
    from locale import str

    #Metodo para conocer el mayor de dos numeros
    def max (a,b):

    if (a>b):
    return a
    else:
    return b

    #Metodo para conocer el mayor de tres numeros
    def max_de_tres (a,b,c):

    if (a>b and a>c):
    return a

    if (b>a and b>c):
    return b

    else:
    return c

    #Este metodo se le pasa un caracter como parametro y devuelve true en caso de ser vocal
    def is_vocal (vocal):
    for letra in ["a","e","i","o","u"]:
    if (vocal == letra):
    return True
    return False

    #Este metodo es ir iterando por una lista y sumar todos los numeros
    def iter_suma ():
    lista = [1,2,3,4,5]
    i=0
    j=0
    while (j < len (lista)):
    i=lista[j]+i
    j=j+1
    return i

    #Este metodo es ir iterando por la lista y multiplicar todo los numeros
    def iter_mult ():
    lista = [1,2,3,4,5]
    i=1
    j=0
    while (j < len (lista)):
    i=lista[j]*i
    j=j+1
    return i

    #Reverso de una cadena
    def reverse (cadena):

    # cadena="estoy probando"
    cadena_reverse = ""
    i =0
    acces = -1
    while (i < len(cadena)):
    cadena_reverse = cadena_reverse + cadena[acces]
    acces=acces-1
    i=i+1
    return cadena_reverse

    def es_palindromo ():

    cadena = "radar"
    cadena_d= reverse(cadena)
    i=0
    while (i< len(cadena)):
    if (cadena[i]==cadena_d[i]):
    i=i+1
    else:
    return False

    return True

    def superposicion():

    lista_A=["A","B","C","D"]
    lista_B=["E","F","C","H"]

    for i in lista_A:
    for j in lista_B:
    if (i==j):
    return True
    return False

    def generar_n_caracteres (cantidad,caracter):

    cadena=""
    i=0

    while (i< cantidad):
    cadena= cadena +caracter
    i=i+1
    return cadena

    def histograma_procedimiento():
    lista_numeros=[4,9,7,6,7,8,4,1,2,3,7]
    for i in lista_numeros:
    print generar_n_caracteres(i, "x")+"\t"

    ResponderEliminar
  19. Hola, tengo que hacer un programa que muestre el nombre y apellido, en el renglón de abajo que muestre la dirección y en el siguiente renglón la palabra 'Joven si es menor de 40 años y 'viejo' si es mayor.como puedo hacer con código siemple? tengo que mostrar 5 personas difeentes

    ResponderEliminar
    Respuestas
    1. Hola, gracias por visitar y participar en el blog. Has pensado algún código para la solución? La solución no es muy compleja y puedes escribirla con código simple. Saludos

      Eliminar
  20. Hola, primero agradecerte el esfuerzo y los ejercicios para practicar, están muy bien. Verás, tengo un problema con el número 8, el de la función superposicion. Me da False todo el rato y no veo ya el problema, a ver si me puedes ayudar. Gracias!!

    def superposicion(a,b):
    for x in a:
    for y in b:
    if x==y:
    return True
    else:
    return False


    l1=['pepe','pepito','juan', 'juanito']
    l2=['pepita', 'juanito', 'juanita','anita']

    comun= superposicion (l1,l2)

    print comun
    raw_input()

    ResponderEliminar
    Respuestas
    1. Hola José, gracias por visitar el blog. El "return False" debería estar identado (sangría) en la misma linea que el primer "for", de este modo si no devuelve "True" terminan los ciclos "for" y devuelve "False" porque no encontró coincidencias. Espero te quede claro. Saludos

      Eliminar
  21. Hola buen día.
    Necesito hacer un programa que identifique con un valor que le de.. cual es la capa de la atmósfera es..

    #! /usr/bin/env python

    capa=int(raw_input('dame la altura en metros'))

    if capa==1 and capa<15000:
    print 'troposfera'

    elif capa==15001 and capa<45000:
    print 'estratosfera'

    elif capa==45001 and capa<80000:
    print'mesosfera'

    elif capa==80001 and capa<640000:
    print'termosfera'
    else:
    print'exosfera'

    ResponderEliminar
  22. Buenas, soy nuevo con esto de python y en la programacion, la verdad no lo entiendo mucho y me mandaron a hacer este ejercicio, gracias de antemano la verdad necesito saber como se hace.

    Realizar un programa en Python que cumpla con los siguientes parámetros:
    1. Calcule el punto de intersección entre dos rectas
    2. Los parámetros de las rectas deben ser ingresados por el usuario
    3. El programa debe guiar al usuario a través del proceso de calculo
    4. El programa debe presentarse así mismo así como presentar los datos
    de salida
    5. Debe poseer la capacidad de detectar errores en la entrada del usuario
    6. Debe poseer la capacidad de detectar si las rectas no se intersectan
    7. Graficar ambas rectas

    ResponderEliminar
  23. ejercicio 6
    def inversa(texto):
    invertida = ""
    for letra in texto:
    invertida = letra + invertida
    print invertida

    inversa("Que Chingue a su Madre el America")

    ejericio 7
    def es_palindromo(texto):
    palabra = ""
    for letra in texto:
    palabra = letra + palabra
    if palabra == texto:
    print "True"
    else:
    print "False"


    es_palindromo("radar")

    ResponderEliminar
    Respuestas
    1. gracias!! lo plantee resolver como tu pero no me salia, con tu ejemplo vi mi error.

      Eliminar
    2. gracias!! lo plantee resolver como tu pero no me salia, con tu ejemplo vi mi error.

      Eliminar
  24. Mas vale tarde que nunca.

    #!/usr/bin/env python3.5
    # -*- coding: iso-8859-15 -*-

    ''' Definir una función max() que tome como argumento dos
    números enteros y devuelva el mayor de ellos.'''
    def num_max():
    num1 = int(input("Ingrese el primer numero: "))
    num2 = int(input("Ingrese el segundo numero: "))

    if num1 > num2:
    print("El numero", +num1, "es mayor")
    else:
    print("El numero", +num2, "es mayor")

    #!/usr/bin/env python3.5
    # -*- coding: iso-8859-15 -*-

    ''' Definir una función max_de_tres(), que tome tres números enteros
    como argumentos y devuelva el mayor de ellos.'''
    def max_de_tres(num1, num2, num3):
    if (num1 > num2 and num1 > num3):
    return num1
    elif (num2 > num1 and num2 > num3):
    return num2
    else:
    return num3

    #!/usr/bin/env python3.5
    # -*- coding: iso-8859-15 -*-

    '''Definir una función que calcule la longitud de una lista
    o una cadena dada.'''
    def longitud_lista(lista):
    cuenta = 0 #-- Inicializamos contador

    #-- Bucle for
    for i in lista:
    cuenta += 1 #-- Incrementamos contador

    return cuenta

    #!/usr/bin/env python3.5
    # -*- coding: iso-8859-15 -*-

    '''Escribir una función que tome un carácter y devuelva True
    si es una vocal, de lo contrario devuelve False.'''
    def es_vocal(vocal):
    return (vocal in ['a', 'e', 'i', 'o', 'u'])

    ResponderEliminar
  25. ayuda!!!!
    un programa que le pida N números al usuario y que los organice de menor a mayor (tienes que reorganizar el arreglo utilizado dos for)

    ResponderEliminar
    Respuestas
    1. Hola, puedes mostrarnos lo que has hecho? para así ayudarte? Saludos y gracias por visitar el blog

      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.