Autor: Carlos Prado
Fecha: 01/07/2019
1.Crea una función que reciba los tres coeficientes a, b y c para resolver una ecuación de segundo grado. Muestra la solución por pantalla y ayúdate de la librería Math para acceder a la función raíz cuadrada.
Ecuación de 2° grado: $ax^2+bx + c = 0$ donde $a\neq0$,
donde x es la variable, y a, b y c constantes; a es el coeficiente cuadrático (distinto de 0), b el coeficiente lineal y c es el término independiente.
import math
def ecuacion(a,b,c):
if (a != 0):
x1 = (-b + math.sqrt(b**2 - 4*a*c)) / (2 * a)
x2 = (-b - math.sqrt(b**2 - 4*a*c)) / (2 * a)
else:
return print("No cumple con la condicion a!=0")
return x1,x2
ecuacion(1,-3,2)
2.Crea una función que lea una frase de teclado y nos diga si es o no un palíndromo (frase que se lee igual de izquierda a derecha o al revés como por ejemplo La ruta nos aportó otro paso natural.)
#Con esta función eliminamos las tildes en vocales mayúsculas y minúsculas.
def sacar_tilde(cadena):
reemplazar = (("á", "a"),("é", "e"),("í", "i"),("ó", "o"),("ú", "u"))
for a, b in reemplazar:
cadena = cadena.replace(a, b).replace(a.upper(), b.upper())
return cadena
print(sacar_tilde("Ejémpló 1 : Lá rútá nós ápórtó ótró pásó nátúrál"))
print(sacar_tilde("EJEMPLO 2 : LÁ RÚTÁ NÓS ÁPÓRTÓ ÓTRÓ PÁSÓ NÁTÚRÁL"))
def palindromo():
texto = input("Ingrese una palabra o frase: ")
copia = texto.lower()
s=sacar_tilde(copia)
sin_espacios = s.replace(" ", "")
invertir = sin_espacios[::-1]
print("Palabra invertida: ",texto[::-1])
print("Longitud: ",len(texto)," letras")
print("Eliminando espacios: ",sin_espacios)
print("Reducción: ",len(sin_espacios)," letras")
if (sin_espacios == invertir):
print("CONCLUSION: la palabra ingresada SI es Palíndromo!!")
else:
print("CONCLUSION: La palabra ingresada NO es Palíndromo!!")
#Funcion Principal
palindromo()
3.Crea un diccionario que tenga por claves los números del 1 al 10 y como valores sus raíces cuadradas
#Creando un diccionario con clave y valor
diccionario = {
1 : math.sqrt(1), 2 : math.sqrt(2),
3 : math.sqrt(3), 4 : math.sqrt(4),
5 : math.sqrt(5), 6 : math.sqrt(6),
7 : math.sqrt(7), 8 : math.sqrt(8),
9 : math.sqrt(9), 10 : math.sqrt(10),
}
# Recorrer un diccionario, imprimiendo su clave-valor
for clave,valor in diccionario.items():
print (clave,valor)
# Otra forma de visualizar los datos
keys = diccionario.keys()
items = diccionario.items()
values= diccionario.values()
items
keys
values
4.Crea un diccionario que tenga como claves las letras del alfabeto castellano y como valores los símbolos del código morse (los tienes todos en la Wikipedia). A continuación crea un programa que lea una frase del teclado y te la convierta a Morse utilizando el diccionario anterior.
#Funcion para traducir
def traduccion(c):
cont = 0
#Creando un diccionario del abecedario español
morse = {
"A" : ".-", "B" : "-...",
"C" : "-.-.", "CH" : "----",
"D" : "-..", "E" : ".",
"F" : "..-.", "G" : "--.",
"H" : "....", "I" : "..",
"J" : ".---", "K" : "-.-",
"L" : ".-..", "M" : "--",
"N" : "-.", "Ñ" : "--.--",
"O" : "---", "P" : ".--.",
"Q" : "--.-", "R" : ".-.",
"S" : "...", "T" : "-",
"U" : "..-", "V" : "...-",
"W" : ".--", "X" : "-..-",
"Y" : "-.--", "Z" : "--..",
}
for i in range(len(c)):
letra=c[i]
for clave,valor in morse.items():
if (clave.lower() == letra):
if (c[i]== "c" and c[i+1] == "h" ):
print(" --> reemplazar CH por -->",morse.get("CH"))
print(" ",c[i]," --> Código -->",valor)
#print("Mayuscula:",clave)
#print("Codigo Morse:",valor)
#Funcion Main
def traductor():
texto = input("Ingrese una palabra o frase: ")
copia = texto.lower()
s=sacar_tilde(copia)
sin_espacios = s.replace(" ", "")
traduccion(sin_espacios)
print("Eliminando espacios: ",sin_espacios)
print("Reducción: ",len(sin_espacios)," letras")
return
traductor()
5.Crea una función que dados dos diccionarios nos diga que claves están presentes en ambos.
def playstation():
consolas = {1 : "Nes", 2 : "Play 1", 3 : "Snes", 4 : "Play 2", 5 : "Megadrive", 6 : "Play 3", 7 : "Family", 8 : "Play 4"}
lanzamiento = {2 : "3 de diciembre de 1994", 4 : "4 de marzo del año 2000", 6 : "11 de noviembre de 2006", 8 : "15 de noviembre de 2013"}
for consolas in lanzamiento:
print("Claves: ",consolas)
return
playstation()
6.Crea una función que dado un número N nos diga si es primo o no (tiene que ir dividiendo por todos los números x comprendidos entre 2 y el propio número N menos uno y ver si el cociente de N/x tiene resto entero o no).
fuente: https://es.wikibooks.org/wiki/Implementaci%C3%B3n_de_algoritmos_de_teor%C3%ADa_de_n%C3%BAmeros/Criba_de_Erat%C3%B3stenes
#Algoritmo criba de eratostenes
def criba_eratostenes(n):
multiplos = set()
for i in range(2, n-1):
if (n%i==0):
print("División: ",n,"/",i,"=",True)
else:
print("División: ",n,"/",i,"=",False)
if i not in multiplos:
print("N° Primo: ",i)
multiplos.update(range(i*i, n+1, i))
criba_eratostenes(100)
7.Investiga la documentación de la clase string y crea un método que lea una frase del teclado y escriba la primera letra de cada palabra en Mayúscula.
def frase():
texto = input("Ingrese una frase: ")
copia = texto.title()
print(copia)
frase()
8.Crea una función que calcule el máximo común divisor de dos números introducidos por el usuario por teclado.
def maximo():
x = input("Ingrese un valor: ")
y = input("Ingrese otro valor: ")
return print("Máximo común divisor ",max(x,y))
maximo()
9.Investiga el Cifrado del César y crea una función que lo reproduzca en Python. Cada letra del mensaje original se desplaza tres posiciones en el alfabeto estándar. La A se convierte en la D, la B se convierte en la E, la C se convierte en la F... y cuando se acaba el alfabeto se le vuelve a dar la vuelta: la X se convierte en la A, la Y en la B y la Z en la C. Los números no sufren ninguna modificación.
Formula matemática $f(x) = (x+n) MOD p$ donce:
import string
def cifrado_cesar():
abc = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"
frase = str(input("Ingrese la frase a codificar --> "))
texto = frase.upper()
ind_abc = 0
ind_texto = 0
n = 3 #Clave de desplazamiento
p = int(len(abc)) #es la longitud del alfabeto
encriptacion = ""
for t in range(0,len(texto)):
texto_letra = texto[t]
pos_t = len(texto) - len(texto) + ind_texto
ind_texto +=1
for i in range(0,len(abc)):
letra = abc[i]
pos_x = len(abc) - len(abc) + ind_abc #número asociado a la letra
#Formula matemática
f = (pos_x + n) % p #f(x) = formula de posición
ind_abc+=1
if (texto_letra == letra):
encriptacion += abc[f]
print("Palabra",texto_letra,"posicion:",pos_t,"=",letra,"pos",pos_x,"Encriptado:",abc[f],"pos",f)
print("PALABRA ENCRIPTADA --> ",encriptacion)
cifrado_cesar()
10.Dado una lista de nombres de persona, escribe un algoritmo que los ordene de tres formas diferentes:
A. De forma alfabética
B. De forma alfabética invertida
C. De nombre más corto al más largo.
def Ordenar():
print("Ordenamiento")
lista_nombres = ['juan', 'María', 'Horacio' ,'Ana', 'Xue lee', 'Daniel', 'Patricio', 'Carlos','walter']
lista_nombres.sort(key = str.lower)
print("A - Z - Maximo: ",lista_nombres)
lista_nombres.sort(key=str.lower, reverse=True)
print("Inverso - Minimo: ",lista_nombres)
lista_nombres.sort(key = len)
print("Longitud: ",lista_nombres)
Ordenar()