Sunteți pe pagina 1din 22

Ejercicios resueltos en python (Parte 1)

Ejercicios resueltos en python (Parte 1)


mircoles, 29 de mayo de 2013
En esta entrada dejare mis soluciones a la primera parte de los ejercicios en

Ejercicios Resueltos
python, si no viste los ejercicios y quieres hacerlos antes de ver las soluciones
ac dejo la entrada:Ejercicios en python (Parte 1) .
Es importante decir que no existe una sola manera de resolver los ejercicios,
cada persona se las ingenia con sus mtodos o lgica. Es importante aclarar este
punto porque puede ser que sus ejercicios estn distintos a los mios pero los
resultados sean los mismos.

Cualquier duda con los resultados dejar comentarios para poder acl ararlas.

Ejercicio 1

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def max (n1, n2):
if n1 < n2:
print n2
elif n2 < n1:
print n1
else:
print "Son iguales"

Aclaro que uso el print para llamar a la funcin de la manera max(8, 5).
Tambin se puede usar return.

Ejercicio 2

#! /usr/bin/env python
# -*- coding: utf-8 -*-
def max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son iguales"

Otra vez uso el print en ves del return. Dependiendo para que lo necesitemos se
usa uno u el otro. En este caso solo quiero mostrar por pantalla cual es el mayor
de los 3 nmeros.

Ejercicio 3

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def largo_cadena (lista):
cont = 0
for i in lista:
cont += 1
return cont

En este ejercicio utilizo return en ves de print. Para ver el resultado tendramos
que llamar la funcin de la manera: print largo_cadena ([1,2,3,4]) o
print largo_cadena ("hola")

Ejercicio 4

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def es_vocal (x):
if x == "a" or x == "e" or x == "i" or x == "o" or x == "u":
return True
elif x == "A" or x == "E" or x == "I" or x == "O" or x == "U":
return True
else:
return False

Ejercicio 5

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def sum (lista):
suma = 0
for i in lista:
suma += i
return suma


def multip (lista):
multiplicacion = 1
for i in lista:
multiplicacion *= i
return multiplicacion

Ejercicio 6

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def inversa (cadena):
invertida = ""
cont = len(cadena)
indice = -1
while cont >= 1:
invertida += cadena[indice]
indice = indice + (-1)
cont -= 1
return invertida

Bueno reconozco que di muchas vueltas para resolver la palabra invertida. Quiz
ustedes tengan una solucin mas simple para los que recin se estn iniciando.
Cualquier cosa dejan un comentario y explico como funciona.

Ejercicio 7

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def inversa (cadena):
invertida = ""
cont = len(cadena)
indice = -1
while cont >= 1:
invertida += cadena[indice]
indice = indice + (-1)
cont -= 1
return invertida

def es_palindromo (cadena):
palabra_invertida = inversa (cadena)
indice = 0
cont = 0
for i in range (len(cadena)):
if palabra_invertida[indice] == cadena[indice]:
indice += 1
cont += 1
else:
print "No es palindromo"
break

if cont == len(cadena): #Si el contador = a la cantidad de letras de la cadena
print "Es palindromo" # es porque recorri todo el ciclo for y todas las
# letras son iguales

Como dije en el ejercicio anterior yo lo pens as, pero deben haber formas mas
fciles de resolverlo.Yo utilizo los conocimientos que hasta la fecha tengo sobre
python.
Lo que hago en este ejercicio es utilizar la funcin del ejercicio anterior ( palabra
invertida) para poder compararla con la cadena que nosotros deseemos.

Ejercicio 8

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def superposicion (lista1, lista2):
for i in lista1:
for x in lista2:
if i == x:
return True
return False

En esta funcin lo que hacemos es comparar dos listas.

Ejercicio 9

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def generar_n_caracteres (n, caracter):
print n * caracter

Ejercicio 10

#! /usr/bin/env python
# -*- coding: utf-8 -*-

def procedimiento (lista):
for i in lista:
print i * "x"

Estara bueno que dejen sus soluciones para comparar ac, o en l a entrada donde
estn propuestos los ejercicios.
Compartir








{ 31 comentarios ... read them below or Comment }
1.
Eneldo Serrata29 de mayo de 2013, 7:29
Buen post..
Responder
Respuestas
1.
Diego Caraballo29 de mayo de 2013, 7:37
Gracias, espero te sirva... Saludos
2.
david vargas4 de julio de 2014, 17:14
def inversa2(x):
cont=""
for i in x:
cont=i+cont
print cont
Responder
2.
Annimo30 de mayo de 2013, 10:50
Hola otra vez!
As me quedaron algunas funciones:

#Punto1: Algo mas corta :)
def maximo(x,y):
return x if x > y else y

#Punto2: Llamando a la funcion anterior
def max_de_tres_1(x,y,z):
m = maximo(x,y)
return maximo(m,z)

# Y sin llamar a la funcion del punto1
def max_de_tres_2(x,y,z):
if x > y and x > z:
return x
elif y > x and y > z:
return y
return z

#Punto 3: Identico al que tienes :)

#Punto4: Usando una lista para evitar los ifs (es una suerte de switch)
def esVocal(caracter):
vocales = ['a', 'e','i','o','u','A', 'E', 'I', 'O', 'U']
return caracter in vocales

#Punto5: Identicos a los que tienes :D

#Punto6: No pense en el tamao...
def inversa(secuencia):
return secuencia[::-1]

#Punto7:LLame a la funcion inversa
def es_palindromo(cadena): # Solo para palabras
return cadena == inversa(cadena)

def es_frase_palindromo(frase): #Mas general, sirve para frases
frase = frase.lower()
frase = frase.replace(' ','')
return es_palindromo(frase)

# Punto8 y Punto9: Son iguales a los tuyos :D

#Punto10: Llamo a la funcion del punto9
def procedimiento(lista):
for numero in lista:
print generar_n_caracteres(numero,'*')

Como te comentaba, son muy buenos puntos para quienes estamos
comenzando en Python. Gracias!
Responder
Respuestas
1.
manuel21 de julio de 2013, 10:34
ayuda como puedo resolver este problema.
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 despus en listar en un
archivo nuevo. con la palabra y el numero de repitiente
Responder
3.
Diego Caraballo30 de mayo de 2013, 16:29
Gracias a ti por el comentario. Ahora estoy en el trabajo, pero cuando
llegue a casa me pongo a ver tus cdigos que al parecer estn muy
buenos. Saludos
Responder
4.
Maria Gomez30 de mayo de 2013, 18:12
7_
def es_palindromo(palabra):
y=0
x=-1
for i in range(len(palabra)/2):
if palabra[y]==palabra[x]:
y=y+1
x=x-1
return True
else:
return False
Responder
Respuestas
1.
Diego Caraballo30 de mayo de 2013, 20:31
Muy bueno, voy a ver si lo analizo para encontrarle la lgica.
Gracias por comentar...
2.
Annimo1 de junio de 2013, 20:01
def es_palindromo(word):
return str(word) == str(word)[::-1]
3.
Diego Caraballo2 de junio de 2013, 16:57
Esta muy bueno. Una forma bien sencilla de resolver la
funcin es_palindromo().
Responder
5.
MariaJesus19 de julio de 2013, 14:21
Hola , me podrian ayudar , tengo que crear una lista de 10 campos con
nmeros aleatorios el rango es de (1-25), en la lista no se deben
repetir los nmeros, por ltimo debe imprimir la lista. Que debo hacer
para que no se repitan los numeros?
Responder
Respuestas
1.
Diego Caraballo19 de julio de 2013, 15:53
Hola Mara, se me ocurre esto para tu consulta. Saludos

#! /usr/bin/env python
# -*- coding: utf-8 -*

import random

lista = []
cant = 0

while cant <= 10:
x = random.randrange(1, 26)
if x not in lista:
lista.append(x)
cant += 1

print lista
2.
manuel21 de julio de 2013, 11:47
ayuda como puedo resolver este problema porfavor.
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 despus en listar en un
archivo nuevo. con la palabra y el numero de repitiente
Responder
6.
Melina Morales28 de agosto de 2013, 19:50
Hola
Disculpa podrias ayudarme con este problema
Los nmeros de empleados en una empresa estn codificados de 100
a 199. Asuma que en un vector se ha almacenado los salarios/hora y
en otro vector las horas trabajadas de los empleados de dicha
empresa. Elabore un programa que lea n nmeros de empleados y
que calcule el salario bruto de cada empleado ledo.
es urgente
GRACIAS!!!!!
Responder
7.
josemi30 de octubre de 2013, 10:19
El 7 de otra manera, igual menos elegante.

def palindromos (x):

longitud=len(x)
rango=range(longitud)
c=0

for z in rango:
a=rango[z]
b=(longitud-1)-a
if str(x[a]) == str(x[b]):
c=c+1 # Si la comparacion es correcta la anadimos al contador
else:
break
#print "No palindromo"
if c == longitud: # Todas las comparaciones son OK? han de ser como
la longitud
return "Si es Palindromo"
else:
return "No es Palindromo"
Responder
8.
Annimo7 de diciembre de 2013, 15:16
Hola!
Creo que la solucin al ejercicio 2 no es del todo correcta, con esa
implementacin al hacer la siguiente llamada:
max_de_tres(3,3,1)
La salida sera "Son iguales", en lugar de "3", que creo que es lo ms
correcto.
Yo haba pensado en algo como:

def max_de_tres (num1, num2, num3):
ret =num3
if num1 >= num2 and num1>=num3:
ret = num1
elif num2>=num1 and num2>=num3:
ret = num2
return ret
Responder
Respuestas
1.
Diego Caraballo12 de diciembre de 2013, 12:43
Buen aporte, no me haba dado cuenta. Gracias por ayudar.
Saludos
Responder
9.
Marcos Mazini7 de enero de 2014, 10:53
Hola, encontr una solucin ms sencilla al ejercicio 6, el de invertir un
texto y sin usar [::-1].

def inversa(texto):
---- invertida = ""
---- for letra in texto:
-------- invertida = letra + invertida
---- return invertida

Saludos!
Responder
10.
Annimo6 de febrero de 2014, 17:51
# -*- coding: utf-8 -*-

def histograma(num1, num2, num3):
h = '*'
a = h * num1
b = h * num2
c = h * num3
print a
print b
print c

histograma(3,3,1)
Responder
11.
Annimo27 de febrero de 2014, 12:01
por que hacen preguntas tan tontas, python es muy facil, los que no
saben hagan un curso y no nos hagan perder tiempo
Responder
12.
Annimo5 de marzo de 2014, 13:38
hay diferentes formas de resolver los problemas no necesariamente
como los ejercicos que estan aki cualkier problema me mandan un
imbox :) saludos desde la universidad de bruselas - Belgica
Responder
13.
Rodrigo Zamora5 de marzo de 2014, 16:52
Hola muy buen post, estoy empezando con python y verdad que es
bonito este lenguaje.

mis soluciones solo difieren en la 4, 6 y 7

quedando asi:

ejercicio 4:

def vocal(dato):
vocals = 'aeiouAEIUO'
if vocals.find(dato)==-1:
print('no es vocal')
else:
print('SI es vocal')

ejercicio 6:

def inversa(cr):
cr = list(cr)
ncr = []
c = len(cr) - 1

for x in range(c, -1, -1):
ncr.append(cr[x])

return ''.join(ncr)

ejercicio 7:

def palindromo(p):
p = list(p) #copia de la palabra, que sera recorrida inversamente
o = p #cadena original
t = len(p) - 1 #tamao de cadena
c = -1 #contador

for x in range(t, -1, -1):
if p[x] == o[t-x]:
c += 1

if c == t:
return 'es palindromo'
else:
return 'NO es palindromo'

Saludos y buen post, ojala puedas poner mas ejercicios interesante,
que vayan subiendo de complejidad.
Responder
14.
charles leyva18 de marzo de 2014, 20:05
Que tal, el ejercico 4 vi una manera de hacerlo diferente

def devuelve(letras,string):
count = 0
for i in range(len(letras)):
if string[0] == letras[i]:
return True
for x in range(len(letras)):
if string[0] != letras[i]:
return False


letras =['a','e','i','o','u']
a = raw_input("Ingresa una variable \n").lower()
contador = 0
for i in a:
contador += 1
if contador == 1:
print devuelve(letras, a)
else:
print "Debes Ingresar un solo caracter \n"
Responder
15.
Annimo1 de abril de 2014, 13:45
El ejercicio 4.
def sum (lista):
suma = 0
for i in lista:
suma += i
return suma


def multip (lista):
multiplicacion = 1
for i in lista:
multiplicacion *= i
return multiplicacion

ninguno de los dos me corre, ayudenme tengo python 3.4
Responder
Respuestas
1.
Diego Caraballo11 de abril de 2014, 10:38
Los ejercicios estn realizados en python 2.7.
Saludos
Responder
16.
S. M. C.10 de abril de 2014, 20:10
hola como stas Diego, stoy studiando este programa que es fabuloso,
pero he quedado atascado en un simple problema... visualizo la
solucion pero me es esquiva...
Escribir un programa para ser usado por el concejo de estudiantse en
las proximas elecciones. El programa listara, y enumerara tres
candidatos para presidente, entoncs deja entrar los votos hasta que al
ingresar cero el programa dara como resultado qien gano, que
porcentaje gano cada candidato...
1. Diego Caraballo
2. Sandro Cruz
3. Luis Perez
son los candidatos... lo que no puedo es obteer el numero de votantes
mediante el conteo de cada voto, puesto que cada voto representa un
votante...
gracias de antemano
Responder
17.
Diego Caraballo11 de abril de 2014, 10:36
Hola S.M.C, no has probado hacerlo usando contadores? Despus
haces los promedios para calcular el porcentaje...
Despus lo hago y te cuento, gracias por escribir...
Responder
18.
Andres Zapata17 de mayo de 2014, 7:51
buenos dias tengo esta consulta sera que me pueden ayudar conn
esto
multiplique dos numeros usando cadenas.....
Responder
Respuestas
1.
Andres Zapata17 de mayo de 2014, 10:07
por favor le agradezco al que me colabore rapido con esto
Responder
19.
ed20 de junio de 2014, 12:33
Buen post, te felicito hermano.
Responder
20.
pepe TZ1 de agosto de 2014, 16:53
Hola buenas,
primero decir que me ha gustado tu post, soy nuevo en python y para
practicar me ha venido muy bien jaja.
He modificado el apartado 10 (el del histograma) para que las
estrellitas (*) salgan en vertical en vez de en horizontal. Dejo aqu el
cdigo por si alguien le quiere echar un vistazo:

#restar uno a cada elemento de la lista que sea igual al maximo
def resta_uno_lista(lista,maximo):
for i in range(0,len(lista)):
if(lista[i]==maximo):
lista[i]-=1
return lista


#genera un histograma con * apartir de una lista de numeros
def histograma(valores):
maximo = max(valores)
maximoIndice = max(valores)
for j in range(0,maximoIndice):
for i in valores:
if (maximo == i):
print('*'),
else:
print(' '),

print('')
#restar uno a cada elemento de la lista que sea igual al maximo
valores=resta_uno_lista(valores,maximo)
maximo-=1