Ejercicios resueltos en python (Parte 1)
Ejercicios resueltos en python (Parte 1) miércoles, 29 de mayo de 2013 En esta entrada dejare mis soluciones a la primera parte de los e j er er c i c i o s e n
Ej ercicios Resueltos Resueltos
p y t h o n , si no viste los ejercicios y quieres hacerlos antes de ver las soluciones
acá dejo la entrada: entrada : Ejercicios en python (Parte 1) . Es importante decir que no existe una sola manera de r e s o l v e r l o s e j e r c i c i o s , cada persona se las ingenia con sus métodos o lógica. Es importante aclarar este punto porque puede ser que sus ejercicios estén distintos a los mios pero los resultados sean los mismos. Cualquier duda con los resultados dejar comentarios para poder aclararlas.
Ejercicio 1 #! /usr/bin/env python # -*- coding: utf-8 -*def max (n1, def max (n1, n2): if n1 n1 < n2: print n2 print n2 elif n2 n2 < n1: print n1 print n1 else:: else print "Son print "Son iguales" Aclar o que Aclaro qu e uso us o el print para llama llamarr a la función fu nción de la maner manera a max(8, 5) . También se puede usar return.
Ejercicio 2 #! /usr/bin/env python # -*- coding: utf-8 -*def max_de_tres def max_de_tres (n1, (n1, n2, n3): if n1 n1 > n2 and and n1 n1 > n3:
print n1 print n1 elif n2 n2 > n1 and and n2 n2 > n3: print n2 elif n3 n3 > n1 and and n3 n3 > n2: print n3 print n3 else:: else print "Son 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 números.
Ejercicio 3 #! /usr/bin/env python # -*- coding: utf-8 -*def largo_cadena (lista): def largo_cadena cont = 0 for i i in in lista: lista: cont += 1 return cont return cont En este ejercicio utilizo return en ves de print. Para ver el resultado tendríamos que llamar la función 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): def es_vocal if x x == "a" or x x == "e" or x x == "i" or x x == "o" or x x == "u": return True elif x x == "A" or x x == "E" or x x == "I" or "I" or x x == "O" or x x == "U": return True else: return False
Ejercicio 5 #! /usr/bin/env python # -*- coding: utf-8 -*def sum (lista): def sum (lista): suma = 0 for i i in in lista: lista: suma += i return suma return suma
def multip (lista): def multip multiplicacion = 1 for i i in in lista: 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 solución mas simple para los que recién se están 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 fáciles de resolverlo.Yo utilizo los conocimientos que hasta la fecha tengo sobre
python. Lo que hago en este ejercicio es utilizar la función 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 función 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" Estaría bueno que dejen sus soluciones para comparar acá, o en la entrada donde están propuestos los ejercicios. Compartir
{ 31 comentarios ... read them below or Comment } 1.
Eneldo Serrata 29 de mayo de 2013, 7:29 Buen post.. Responder Respuestas
1.
Diego Caraballo 29 de mayo de 2013, 7:37 Gracias, espero te sirva... Saludos
2.
david vargas 4 de julio de 2014, 17:14
def cont="" for cont=i+cont print cont
inversa2(x): i
in
x:
algunas
vez! funciones:
Responder
2.
Anónimo30 de mayo de 2013, 10:50 ¡Hola Así #Punto1: def return
otra quedaron
me
Algo x
if
#Punto2: def m return
x
Llamando
y
la
funcion anterior max_de_tres_1(x,y,z): maximo(x,y) maximo(m,z)
a
llamar >
y
>
3:
a
x
Identico
corta :) maximo(x,y): else y
>
=
# Y sin def if x return elif y return return #Punto
mas
la
funcion del punto1 max_de_tres_2(x,y,z): and x > z: x and y > z: y z
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: #Punto6: def return
Identicos No
a
los
pense
#Punto7:LLame a def es_palindromo(cadena): return cadena
que en
la #
tienes
:D
el tamaño... inversa(secuencia): secuencia[::-1]
funcion inversa Solo para palabras == inversa(cadena)
def es_frase_palindromo(frase): #Mas general, sirve para frases frase = frase.lower() frase = frase.replace(' ','') return es_palindromo(frase)
#
Punto8
#Punto10: def for print
y
Punto9:
Llamo
Son a
numero
la
iguales
a
los
tuyos
:D
funcion
del punto9 procedimiento(lista): in lista: 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 después en listar en un archivo nuevo. con la palabra y el numero de repitiente Responder
3.
Diego Caraballo 30 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 códigos que al parecer están muy buenos. Saludos Responder
4.
Maria Gomez 30 de mayo de 2013, 18:12 7_ def y=0 x=-1 for if y=y+1 x=x-1 return else: return False Responder Respuestas
es_palindromo(palabra):
i
in
range(len(palabra)/2): palabra[y]==palabra[x]:
True
1.
Diego Caraballo 30 de mayo de 2013, 20:31 Muy bueno, voy a ver si lo analizo para encontrarle la lógica. Gracias por comentar...
2.
Anónimo1 de junio de 2013, 20:01 def return str(word) == str(word)[::-1]
es_palindromo(word):
3.
Diego Caraballo 2 de junio de 2013, 16:57 Esta muy bueno. Una forma bien sencilla de resolver la función es_palindromo(). Responder
5.
MariaJesus19 de julio de 2013, 14:21 Hola , me podrian ayudar , tengo que crear una lista de 10 campos con números aleatorios el rango es de (1-25), en la lista no se deben repetir los números, por último debe imprimir la lista. Que debo hacer para que no se repitan los numeros? Responder Respuestas
1.
Diego Caraballo 19 de julio de 2013, 15:53 Hola María, se me ocurre esto para tu consulta. Saludos #! #
-*-
/usr/bin/env coding:
utf-8
import
random
lista cant while x = if x lista.append(x) cant print lista
2.
python -*
= = cant
<= random.randrange(1, not in +=
[] 0 10: 26) lista: 1
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 después en listar en un archivo nuevo. con la palabra y el numero de repitiente Responder
6.
Melina Morales 28 de agosto de 2013, 19:50 Hola Disculpa podrias ayudarme con este problema Los números de empleados en una empresa están 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 números de empleados y que calcule el salario bruto de cada empleado leído. es urgente GRACIAS!!!!! Responder 7.
josemi 30 de octubre de 2013, 10:19 El
7
de
otra
def
manera,
igual
menos
palindromos
elegante. (x):
longitud=len(x) rango=range(longitud) c=0 for z in a=rango[z] b=(longitud-1)-a if str(x[a]) == c=c+1 # Si la comparacion es correcta la anadimos else: break #print "No if c == longitud: # Todas las comparaciones son OK? han la return "Si es else: return "No es Palindromo" Responder
rango:
str(x[b]): al contador
palindromo" de ser como longitud Palindromo"
8.
Anónimo7 de diciembre de 2013, 15:16 Hola! Creo que la solución al ejercicio 2 no es del todo correcta, con esa implementación al hacer la siguiente llamada: max_de_tres(3,3,1) La salida sería "Son iguales", en lugar de "3", que creo que es lo más correcto. Yo había pensado en algo como: def max_de_tres ret if num1 >= ret elif num2>=num1 ret return ret Responder Respuestas
1.
(num1,
num2,
num2 =
and and
=
num3): =num3 num1>=num3: num1 num2>=num3: num2
Diego Caraballo 12 de diciembre de 2013, 12:43 Buen aporte, no me había dado cuenta. Gracias por ayudar. Saludos Responder
9.
Marcos Mazini 7 de enero de 2014, 10:53 Hola, encontré una solución más sencilla al ejercicio 6, el de invertir un texto y sin usar [::-1]. def ----------------Saludos! Responder 10.
invertida for invertida
= in
letra = return
letra
+
inversa(texto): "" texto: invertida invertida
Anónimo6 de febrero de 2014, 17:51 # def h a b c print print print
-*-
coding:
histograma(num1,
utf-8 num2,
= = = =
h h h
* * *
-*num3): '*' num1 num2 num3 a b c
histograma(3,3,1) Responder 11.
Anónimo27 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.
Anónimo5 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 Zamora 5 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
quedando
en
la
4,
6
y
7 asi:
ejercicio
4:
def vocals if print('no else: print('SI
es
vocal(dato): 'aeiouAEIUO' vocals.find(dato)==-1: vocal')
es
vocal')
=
ejercicio def cr ncr
6:
= =
inversa(cr): list(cr) []
c
=
len(cr)
for x ncr.append(cr[x])
in
-
range(c,
1 -1,
return
-1):
''.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 #tamaño de cadena c = -1 #contador for if c if return else: return
x
in
range(t, == +=
p[x]
c
== 'es
'NO
es
-1,
-1): o[t-x]: 1 t: palindromo' palindromo'
Saludos y buen post, ojala puedas poner mas ejercicios interesante, que vayan subiendo de complejidad. Responder
14.
charles leyva 18 de marzo de 2014, 20:05 Que def count for if return for if return
tal,
el
ejercico
4
i string[0] x string[0]
vi
una
manera
= in == in !=
de
hacerlo
diferente
devuelve(letras,string): 0 range(len(letras)): letras[i]: True range(len(letras)): letras[i]: 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.
Anónimo1 de abril de 2014, 13:45 El def suma for suma return
def multiplicacion for multiplicacion return
ejercicio sum = i
in +=
multip = i
in *=
ninguno de los dos me corre, ayudenme tengo python 3.4 Responder Respuestas
1.
4. (lista): 0 lista: i suma
(lista): 1 lista: i multiplicacion
Diego Caraballo 11 de abril de 2014, 10:38 Los ejercicios Saludos
están
realizados
en
python
2.7.
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 Caraballo 11 de abril de 2014, 10:36 Hola S.M.C, no has probado hacerlo usando contadores? Después haces los promedios para calcular el porcentaje... Después lo hago y te cuento, gracias por escribir... Responder 18.
Andres Zapata 17 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 Zapata 17 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 código 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