Ejercicios en Python

23
Cualquier duda con los resultados dejar comentarios para poder aclararlas. 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 función de la manera max(8, 5). También 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 números.

description

trabajo

Transcript of Ejercicios en Python

Cualquier duda con los resultados dejar comentarios para poder aclararlas.

Ejercicio 1

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

defmax(n1, n2):ifn1 < n2: printn2elifn2 < n1: printn1else: print"Son iguales"

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

Ejercicio 2

#! /usr/bin/env python# -*- coding: utf-8 -*-defmax_de_tres(n1, n2, n3):ifn1 > n2andn1 > n3: printn1elifn2 > n1andn2 > n3: print n2elifn3 > n1andn3 > n2: printn3else: 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 -*-

deflargo_cadena(lista): cont =0foriinlista: cont +=1returncont

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]) oprint largo_cadena ("hola")

Ejercicio 4

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

defes_vocal(x):ifx == "a"orx == "e"orx == "i"orx == "o"orx == "u": return Trueelifx == "A"orx == "E"orx == "I"orx == "O"orx == "U": return True else: return False

Ejercicio 5

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

defsum(lista): suma =0foriinlista: suma += ireturnsuma defmultip(lista): multiplicacion =1foriinlista: multiplicacion *= ireturnmultiplicacion

Ejercicio 6

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

definversa(cadena): invertida ="" cont =len(cadena) indice =-1whilecont >=1: invertida += cadena[indice] indice = indice + (-1) cont -=1returninvertida

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 -*-

definversa(cadena): invertida ="" cont =len(cadena) indice =-1whilecont >=1: invertida += cadena[indice] indice = indice + (-1) cont -=1returninvertida

defes_palindromo(cadena): palabra_invertida = inversa (cadena) indice =0 cont =0 fori inrange(len(cadena)): ifpalabra_invertida[indice] == cadena[indice]: indice +=1 cont +=1 else: print"No es palindromo" break

ifcont ==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 -*-

defsuperposicion(lista1, lista2):foriinlista1: forxinlista2: ifi == x: return Truereturn False

En esta funcin lo que hacemos escomparar dos listas.

Ejercicio 9

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

defgenerar_n_caracteres(n, caracter):printn * caracter

Ejercicio 10

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

defprocedimiento(lista):foriinlista: printi *"x"

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

1.- Crear un algoritmo que escriba "Hola" cinco veces.// 1.- Crear un algoritmo que escriba "Hola" cinco veces.Proceso Resuelto01 Para x 0 Entonces Escribir "Es positivo"; Sino Si x < 0 Entonces Escribir "Es negativo"; Sino Escribir "Es cero"; FinSi FinSiFinProceso 3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.// 3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.// Forma (a), sin usar matricesProceso Resuelto03 suma = numero2 and numero1 % numero2: print(numero1, "no es mltiplo de", numero2)elif numero1 >= numero2 and numero1 % numero2 == 0: print(numero1, "es mltiplo de", numero2)elif numero1 < numero2 and numero2 % numero1: print(numero2, "no es mltiplo de", numero1)else: print(numero2, "es mltiplo de", numero1)

El siguiente programa utiliza sentencias condicionales anidadas:print("Comparador de mltiplos")numero1 = int(input("Escriba un nmero: "))numero2 = int(input("Escriba otro nmero: "))

if numero1 >= numero2: if numero1 % numero2: print(numero1, "no es mltiplo de", numero2) else: print(numero1, "es mltiplo de", numero2)else: if numero2 % numero1: print(numero2, "no es mltiplo de", numero1) else: print(numero2, "es mltiplo de", numero1)

El siguiente programa utiliza variables auxiliares que almacenan el nmero ms grande y el ms pequeo:print("Comparador de mltiplos")numero1 = int(input("Escriba un nmero: "))numero2 = int(input("Escriba otro nmero: ")) if numero1 >= numero2: mayor = numero1 menor = numero2else: mayor = numero2 menor = numero1

if mayor % menor: print(mayor, "no es mltiplo de", menor)else: print(mayor, "es mltiplo de", menor)

if...elif...else... 05En este ejercicio unas situaciones incluyen a otras (el caso "tres valores iguales" es un caso particular del caso "dos valores iguales"). En esos casos, el orden en que se comprueban las situaciones hace que las expresiones sean ms o menos complicadas.

En el siguiente programa se trata primero el caso ms complicado (dos nmeros iguales), por lo que la primera condicin es complicada. Hay que comprobar todos los casos posibles (que cualquier pareja de valores sean iguales y que el tercer nmero sea distinto). La condicin est escrita entre parntesis porque ocupa ms de un lnea.print("Comparador de tres nmeros")numero1 = int(input("Escriba un nmero: "))numero2 = int(input("Escriba otro nmero: "))numero3 = int(input("Escriba otro nmero ms: "))

if (numero1 == numero2 != numero3 or numero1 == numero3 != numero2 or numero2 == numero3 != numero1): print("Ha escrito uno de los nmeros dos veces.")elif numero1 == numero2 == numero3: print("Ha escrito tres veces el mismo nmero.")else: print("Los tres nmeros que ha escrito son distintos.")

En el siguiente programa el caso ms complicado (dos nmeros iguales) se deja para el final, para no tener que escribir la condicin de ese casoprint("Comparador de tres nmeros")numero1 = int(input("Escriba un nmero: "))numero2 = int(input("Escriba otro nmero: "))numero3 = int(input("Escriba otro nmero ms: "))

if numero1 != numero2 and numero1 != numero3 and numero2 != numero3: print("Los tres nmeros que ha escrito son distintos.")elif numero1 == numero2 == numero3: print("Ha escrito tres veces el mismo nmero.")else: print("Ha escrito uno de los nmeros dos veces.")

En el siguiente programa, aunque el caso ms complicado (dos nmeros iguales) no se deja para el final, la condicin correspondiente no es tan complicada como en el primer ejemplo, ya que la primera condicin elimina los casos en los que los tres nmeros son iguales y en la segunda condicin simplemente se comprueba que haya dos iguales (no hace falta comprobar que el tercero sea distinto puesto que si fueran iguales se cumplira la primera condicin).print("Comparador de tres nmeros")numero1 = int(input("Escriba un nmero: "))numero2 = int(input("Escriba otro nmero: "))numero3 = int(input("Escriba otro nmero ms: "))

if numero1 == numero2 == numero3: print("Ha escrito tres veces el mismo nmero.")elif numero1 == numero2 or numero1 == numero3 or numero2 == numero3: print("Ha escrito uno de los nmeros dos veces.")else: print("Los tres nmeros que ha escrito son distintos.")Es importante sealar que mientras que en el primer y segundo programa se podran intercambiar la primera y segunda condicin y los programas seguiran funcionando, en el tercer programa no se podran intercambiar la primera y segunda condicin ya que el programa no dara la respuesta correcta al escribir tres valores iguales.

if...elif...else... 06El siguiente programa utiliza sentencias condicionales independientes, por lo que el orden en que se escriban las sentencias condicionales no es importante:print("Comprobador de aos bisiestos")fecha = int(input("Escriba un ao y le dir si es bisiesto: "))

if fecha %4 != 0: print("El ao", fecha, "no es un ao bisiesto.")if fecha % 100 == 0 and fecha % 400 != 0: print("El ao", fecha, "no es un ao bisiesto porque es mltiplo de 100", "sin ser mltiplo de 400.")if fecha % 4 == 0 and fecha % 100 != 0: print("El ao", fecha, "es un ao bisiesto porque es mltiplo de 4.")if fecha % 400 == 0: print("El ao", fecha, "es un ao bisiesto porque es mltiplo de 400.")

Como algunos de estos casos estn incluidos en otros (los mltiplos de 400 son mltiplos de 100 y los mltiplos de 100 son mltiplos de 4), las condiciones se pueden simplificar si se escriben sentencias condicionales encadenadas y se empieza por el caso ms especial.Al haber comprobado en el primer caso si la fecha es mltiplo de 400, en el segundo caso no hace falta comprobar que la fecha no sea mltiplo de 400. Y de la misma manera, en el tercer caso no hace falta comprobar que la fecha sea mltiplo de 100.print("Comprobador de aos bisiestos")fecha = int(input("Escriba un ao y le dir si es bisiesto: "))

if fecha % 400 == 0: print("El ao", fecha, "es un ao bisiesto porque es mltiplo de 400.")elif fecha % 100 == 0: print("El ao", fecha, "no es un ao bisiesto porque es mltiplo de 100", "sin ser mltiplo de 400.")elif fecha % 4 == 0: print("El ao", fecha, "es un ao bisiesto porque es mltiplo de 4.")else: print("El ao", fecha, "no es un ao bisiesto.")En el programa anterior el orden en que se hacen las comprobaciones es muy importante. Si se reordenaran las sentencias sin modificar las condiciones, el programa fallara.

El programa puede compactarse si no se detallan los motivos por los que un ao es bisiesto y simplemente se responde si el ao es bisiesto o no:print("Comprobador de aos bisiestos")fecha = int(input("Escriba un ao y le dir si es bisiesto: "))

if fecha % 400 == 0 or (fecha % 100 != 0 and fecha % 4 == 0): print("El ao", fecha, "es un ao bisiesto.")else: print("El ao", fecha, "no es un ao bisiesto.")

if...elif...else... 07El siguiente programa utiliza sentencias condicionales independientes:print("Ecuacin a x + b = 0")a = float(input("Escriba el valor del coeficiente a: "))b = float(input("Escriba el valor del coeficiente b: "))

if a != 0: print("Una solucin:", - b / a)if a == 0 and b == 0: print("Todos los nmeros son solucin")if a == 0 and b != 0: print("Sin solucin")El siguiente programa utiliza sentencias condicionales encadenadas para simplificar las condiciones. El primer caso es el caso ms especial (ambos coeficientes nulos), el segundo caso es el siguiente ms especial (el coeficiente a nulo) y el ltimo el ms general (coeficientes no nulos).print("Ecuacin a x + b = 0")a = float(input("Escriba el valor del coeficiente a: "))b = float(input("Escriba el valor del coeficiente b: "))

if a == b == 0: print("Todos los nmeros son solucin")elif a == 0: print("Sin solucin")else: print("Una solucin:", - b / a)

if...elif...else... 08El siguiente programa utiliza sentencias condicionales independientes, por lo que el orden de las sentencias condicionales podra ser cualquiera:print("Ecuacin a x + b x + c = 0")a = float(input("Escriba el valor del coeficiente a: "))b = float(input("Escriba el valor del coeficiente b: "))c = float(input("Escriba el valor del coeficiente b: "))

d = b*b - 4*a*cif a == b == c == 0: print("Todos los nmeros son solucin")if a == b == 0 and c != 0: print("Sin solucin")if a == 0 and b != 0 and c != 0: print("Una solucin:", -c / b)if a !=0 and d < 0: print("Sin solucin real")if a !=0 and d == 0: print("Una solucin:", -b / (2*a))if a !=0 and d > 0: print("Dos soluciones:", (-b - d**0.5) / (2*a), "y", (-b + d**0.5) / (2*a))El siguiente programa utiliza sentencias condicionales encadenadas para simplificar las condiciones. Las tres primeras son similares a las del ejercicio de la ecuacin de primer grado (el trmino a es 0) y el orden es importante. Las tres ltimas corresponden a ecuaciones de segundo grado propiamente dichas (el trmino a es distinto de 0). Las tres ltimas pueden estar en cualquier orden, pero siempre detrs de las tres primeras.print("Ecuacin a x + b x + c = 0")a = float(input("Escriba el valor del coeficiente a: "))b = float(input("Escriba el valor del coeficiente b: "))c = float(input("Escriba el valor del coeficiente b: "))

d = b*b - 4*a*cif a == b == c == 0: print("Todos los nmeros son solucin")elif a == b == 0: print("Sin solucin")elif a == 0: print("Una solucin:", - c / b)elif d < 0: print("Sin solucin real")elif d == 0: print("Una solucin:", - b / (2*a))else: print("Dos soluciones:", (-b - d**0.5) / (2*a), "y", (-b + d**0.5) / (2*a))Tambin se podran agrupar las tres ltimas condiciones:print("Ecuacin a x + b x + c = 0")a = float(input("Escriba el valor del coeficiente a: "))b = float(input("Escriba el valor del coeficiente b: "))c = float(input("Escriba el valor del coeficiente b: "))

if a == b == c == 0: print("Todos los nmeros son solucin")elif a == b == 0: print("Sin solucin")elif a == 0: print("Una solucin:", - c / b)else: d = b*b - 4*a*c if d < 0: print("Sin solucin real") elif d == 0: print("Una solucin:", - b / (2*a)) else: print("Dos soluciones:", (-b - d**0.5) / (2*a), "y", (-b + d**0.5) / (2*a))

if...elif...else... 09print("Clculo de reas - Elige una figura geomtrica:")print("a) Tringulo")print("b) Crculo")respuesta = input("Qu figura quiere calcular (Escriba T o C)? ")

if respuesta == "T" or respuesta == "t": base = float(input("Escriba la base: ")) altura = float(input("Escriba la altura: ")) print("Un tringulo de base", base, "y altura", altura, "tiene un rea de", base * altura / 2)elif respuesta == "C" or respuesta == "c": radio = float(input("Escriba el radio: ")) print("Un crculo de radio", radio, "tiene un rea de ", 3.141592 * radio**2)

if...elif...else... 10El siguiente programa escribe el resultado sin separadores y sea cual sea su valor:print("Convertidor de centmetros a kilmetros, metros y centmetros")centimetros = int(input("Escriba una distancia en centmetros: "))

kilometros = centimetros // 100000metros = centimetros % 100000 // 100resto = centimetros % 100

print(centimetros, "cm son", kilometros, "km", metros, "m", resto, "cm")El siguiente programa escribe el resultado sin separadores, escribiendo nicamente los valores distintos de cero:print("Convertidor de centmetros a kilmetros, metros y centmetros")centimetros = int(input("Escriba una distancia en centmetros: "))

kilometros = centimetros // 100000metros = centimetros % 100000 // 100resto = centimetros % 100

print(centimetros, "cm son ", end="")if kilometros: print(kilometros, "km ", end="")if metros: print(metros, "m ", end="")if centimetros == 0 or resto: print(resto, "cm")El siguiente programa escribe el resultado con comas como separadores, escribiendo nicamente los valores distintos de cero:print("Convertidor de centmetros a kilmetros, metros y centmetros")centimetros = int(input("Escriba una distancia en centmetros: "))

kilometros = centimetros // 100000metros = centimetros % 100000 // 100resto = centimetros % 100

print(centimetros, "cm son ", end="")if kilometros: if metros or resto: print(kilometros, "km, ", end="") else: print(kilometros, "km")if metros: if resto: print(metros, "m, ", end="") else: print(metros, "m")if centimetros == 0 or resto: print(resto, "cm")El siguiente programa escribe el resultado con comas y la conjuncin "y" como separadores, escribiendo nicamente los valores distintos de cero y teniendo en cuenta el caso de 1 cm (escribe la respuesta en singular):print("Convertidor de centmetros a kilmetros, metros y centmetros")centimetros = int(input("Escriba una distancia en centmetros: "))

kilometros = centimetros // 100000metros = centimetros % 100000 // 100resto = centimetros % 100

if centimetros < 0: print("No se admiten valores negativos")elif centimetros == 1: print("1 cm es 1 cm")else: print(centimetros, "cm son ", end="") if kilometros: if (metros and resto == 0) or (metros == 0 and resto): print(kilometros, "km y ", end="") elif metros or resto: print(kilometros, "km, ", end="") else: print(kilometros, "km") if metros: if resto: print(metros, "m y ", end="") else: print(metros, "m") if centimetros == 0 or resto: print(resto, "cm")