Ejercicios resueltos en python (Parte 2)
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:
# -*- coding: utf-8 -*-
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: ")
for i in 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
#! /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 -*-
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
-
-
Muy buena tu solución. No conocía la función istitle(). Saludos
-
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 countprint ("Su palabra tiene %d mayuscula/sn" %count) #Aquí se utliza %d ya que devuelve un entero
-
-
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 -
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 -
alguien me puede decir como convertir de Binario a hexadecimal??
Gracias 🙂 -
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
-
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...
-
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?
-
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
-
-
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_cursoAsi si se pueden restar ya que estan convertidas en numeros en enteros
-
para el 7
def Mayores(tupla):
c= 0
for i in tupla:
if i > 20:
c = c+1
return cm = "Ingrese los valores: "
n = 10t=[int(raw_input(m))
for i in range(10)]
a =Mayores(t)
print "n", a-
pero la función se supone debe llevar una tupla como argumento o no?
-
-
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 itertoolsdef pinche(ingredientes):
menu = []
for n in range(2,len(ingredientes)+1):
menu.extend(itertools.combinations(ingredientes,n))
return menumimenu = pinche(["angus","lobster","caviar","patatas","aguaqate","legumbres"])
for m in mimenu: print m
-
No probaste hacerlo con un diccionario? para poder asignarle un valor a cada ingrediente. Saludos
-
-
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 -
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])) -
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ó') -
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.
-
Este comentario ha sido eliminado por el autor.
-
Ejercicio 2:
def largest(data):
return max(data, key=lambda x: len(x))-
Hola! y si hay dos o mas palabras de igual longitud?
Gracias
-
-
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?
-
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 -
Hola muchas gracias en mi trabajo lo hicieron de otra manera utilizando selenium 🙁 y si soy totalmente nueva en python.
-
-
Este comentario ha sido eliminado por el autor.
-
#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 newTupladef 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 Xmain = Older20(Prompting())
print(main)
-
-
Para el primer ejercicio, si todos los numeros son menores a 0, devuelve 0 aunque no este en la lista
-
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]
-
-
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?
-
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 mayprint "la palabra mas larga es ",mayor(vectores)
-
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 -
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.
-
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 = 0for 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_aif(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_ureturn 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")
-
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:] -
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 -
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
-
Que son los codigos al principio de cada solicion que inician con #
-
Comentarios
-
-
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 = wordreturn result
Díganme que opinan....
-
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
-
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 nYa que allí está considerado para números negativos.
Espero sus comentarios.
Saludos. -
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) -
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)
-
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) -
ejercicio 4 sin usar funcion:
word = input('Ingrese una palabra: ')
con = 0
for i in word:
if i == i.upper():
con += 1
print(con)-
En ese caso los espacios también los contabilizaría como "mayúsculas" y no es correcto.
-
-
La solución del ejercicio 6 no funciona de ninguna manera
Deja una respuesta
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)