Skip to content

Soluciones en python #1424

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions retos_resueltos_alcaan16/ejer_0.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
"""
#0-EL FAMOSO "FIZZ BUZZ"
/*
* Escribe un programa que muestre por consola (con un print) los
* números de 1 a 100 (ambos incluidos y con un salto de línea entre
* cada impresión), sustituyendo los siguientes:
* - Múltiplos de 3 por la palabra "fizz".
* - Múltiplos de 5 por la palabra "buzz".
* - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz".
*/

"""

def funcion(var_1, var_2):

for i in range(1,101):
if i % 3 == 0 and i % 5 == 0:
print(f"el numero {i} es {var_1}{var_2}")
elif i % 3 == 0:
print(f"el numero {i} es {var_1}")
elif i % 5 == 0:
print(f"el numero {i} es {var_2}")

funcion ("fizz", "buzz")
30 changes: 30 additions & 0 deletions retos_resueltos_alcaan16/ejer_01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"""
#1-¿ES UN ANAGRAMA?
/*
* Escribe una función que reciba dos palabras (String) y retorne
* verdadero o falso (Bool) según sean o no anagramas.
* - Un Anagrama consiste en formar una palabra reordenando TODAS
* las letras de otra palabra inicial.
* - NO hace falta comprobar que ambas palabras existan.
* - Dos palabras exactamente iguales no son anagrama.
*/
"""

def anagrama (var_1, var_2):
if var_1.lower() == var_2.lower():
#print ("las palabras son iguales")
return False
return sorted(var_1.lower()) == sorted (var_2.lower())

"""otra opcion

elif sorted(var_1.lower()) == sorted (var_2.lower()):
#print ("las palabras son anagramas")
return True
else:
#print ("las palabras NO son anagramas")
return False
"""

print (anagrama("Caso", "saco"))

18 changes: 18 additions & 0 deletions retos_resueltos_alcaan16/ejer_02.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""
#2-LA SUCESIÓN DE FIBONACCI
/*
* Escribe un programa que imprima los 50 primeros números de la sucesión
* de Fibonacci empezando en 0.
* - La serie Fibonacci se compone por una sucesión de números en
* la que el siguiente siempre es la suma de los dos anteriores.
* 0, 1, 1, 2, 3, 5, 8, 13...
*/
"""
prev = 0
next = 1

for i in range(0,50):
print (prev)
fib = prev + next
prev = next
next = fib
42 changes: 42 additions & 0 deletions retos_resueltos_alcaan16/ejer_03.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""
#3-¿ES UN NÚMERO PRIMO?
/*
* Escribe un programa que se encargue de comprobar si un número es o no primo.
* Hecho esto, imprime los números primos entre 1 y 100.
*/

En matemáticas, un número primo es un número natural mayor que 1
que tiene únicamente dos divisores positivos distintos: él mismo y el 1.
Los números primos son:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29

"""
def primo (numero):
if numero < 2:
return False

for i in range(2,numero):
if numero % i == 0:
return False

return True
x = 13
resultado = primo(x)
print (f"el numero {x} es primo? {resultado}")


#listado primos
def list_primo ():
print ("\nlos primeros numeros primos son:")
for numero_2 in range(0,101):
if numero_2 >= 2:
divisible = False
for i in range(2,numero_2):
if numero_2 % i == 0:
divisible = True
break
#if not divisible: #tambien es correcto
if divisible == False:
print (numero_2)

list_primo()
28 changes: 28 additions & 0 deletions retos_resueltos_alcaan16/ejer_04.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""
#4-ÁREA DE UN POLÍGONO
/*
* Crea una única función (importante que sólo sea una) que sea capaz
* de calcular y retornar el área de un polígono.
* - La función recibirá por parámetro sólo UN polígono a la vez.
* - Los polígonos soportados serán Triángulo, Cuadrado y Rectángulo.
* - Imprime el cálculo del área de un polígono de cada tipo.
*/

*triangulo= base por altura dividido por 2.
*cuadrado= multiplicamos Lado x Lado
*rectangulo= multiplicamos el largo por el ancho.


"""

def area (num_1, num_2):
triangulo = (num_1 * num_2) /2
var = num_1 * num_2
print (f"el area del triangulo es {triangulo}")
print (f"el area del cuadrado es {var}")
print (f"el area del rectangulo es {var}")

num_1 = 5
num_2 = 2

area(num_1, num_2)
44 changes: 44 additions & 0 deletions retos_resueltos_alcaan16/ejer_05.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""
#5-ASPECT RATIO DE UNA IMAGEN
/*
* Crea un programa que se encargue de calcular el aspect ratio de una
* imagen a partir de una url.
* - Url de ejemplo:
* https://raw.githubusercontent.com/mouredevmouredev/master/mouredev_github_profile.png
* - Por ratio hacemos referencia por ejemplo a los "16:9" de una
* imagen de 1920*1080px.
*/

Tienes que dividir la altura original por la anchura original
y luego multiplicar este número por la nueva anchura para obtener la nueva altura.
Estos pasos le darán la altura correcta para su imagen editada.



def ratio(num_1, num_2):
var= num_1 / num_2
print (var)




num_1 = 1920
num_2 = 1080
ratio(num_1, num_2)
"""

from PIL import Image
import requests, math
from io import BytesIO

def get_aspect_ratio(image_url):
img_content = requests.get(image_url).content
try:
image = Image.open(BytesIO(img_content))
width, height = image.size
greatest_common_divisor = math.gcd(width, height)
aspect_ratio = f"{round(width / greatest_common_divisor)}:{round(height / greatest_common_divisor)}"
print(f"The Aspect Ratio is: {aspect_ratio}")
except Exception:
print("The provided URL is not a valid image.")
get_aspect_ratio("https://wallpaperaccess.com/full/109676.jpg")
20 changes: 20 additions & 0 deletions retos_resueltos_alcaan16/ejer_06.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"""
#6-INVIRTIENDO CADENAS
/*
* Crea un programa que invierta el orden de una cadena de texto
* sin usar funciones propias del lenguaje que lo hagan de forma automática.
* - Si le pasamos "Hola mundo" nos retornaría "odnum aloH"
*/
"""

def reves (texto):
texto_reves = ""
largo = len(texto)
print (texto)
#print (largo)
for i in range (0, largo):
#print (texto[i])
texto_reves += texto[largo-i-1]
return texto_reves

print(reves("Hola mundo"))
50 changes: 50 additions & 0 deletions retos_resueltos_alcaan16/ejer_07.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"""
#7-CONTANDO PALABRAS
/*
* Crea un programa que cuente cuantas veces se repite cada palabra
* y que muestre el recuento final de todas ellas.
* - Los signos de puntuación no forman parte de la palabra.
* - Una palabra es la misma aunque aparezca en mayúsculas y minúsculas.
* - No se pueden utilizar funciones propias del lenguaje que
* lo resuelvan automáticamente.
*/
"""

#funcion para eliminar los simbolos

def corrector (frase):

simbolos = [".", ",", ":", ";", "!", "¡", "?", "¿", "(", ")", "{", "}", "[", "]", "-"]
frase_nueva = ""

#recorre la frase letra por letra y elimina los simbolos
for letra in frase:

if letra in simbolos:
letra = ("")

frase_nueva += letra

#devuelve la frase convertida en una lista y en minusculas
return frase_nueva.lower().split(" ")


# funcion principal para contar
def contar (frase):

frase_listada = corrector(frase)
contador = {}
#recorre en la frase listada nueva las palabras y las asigna a un diccionario
for palabra in frase_listada:
if palabra not in contador:
contador[palabra] = 1
else:
contador[palabra] += 1

#recorre el diccionario y lo muestra
print("el conteo es el siguiente: ")
for listado in contador:
print (f"{listado} : {contador[listado]}")


contar("esta es la Prueba, prueba? prueba:")
41 changes: 41 additions & 0 deletions retos_resueltos_alcaan16/ejer_08.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"""
#8-DECIMAL A BINARIO
/*
* Crea un programa se encargue de transformar un número
* decimal a binario sin utilizar funciones propias del lenguaje que lo hagan directamente.
*/

Iterando cadena al revés. Haciendo uso de [::-1] se puede iterar la lista desde el último al primer elemento.

texto = "Python"
for i in texto[::-1]:
print(i) #n,o,h,t,y,P
Itera la cadena saltándose elementos. Con [::2] vamos tomando un elemento si y otro no.

texto = "Python"
for i in texto[::2]:
print(i) #P,t,o

"""

def decimal_to_binary(decimal_number: int):
decimal_num = decimal_number
binary = ""
binary_result = ""

# Mientras el número sea diferente de 0, lo divide por 2 y añade el módulo a un String
while decimal_number != 0:
modulo = decimal_number % 2
decimal_number = decimal_number // 2
binary += str(modulo)

# Invierte el String para obtener el resultado final
for i in binary[::-1]:
binary_result += i

# Retorna el Resultado
print(f"El numero decimal {decimal_num}, en binario es {binary_result}.")


# Test
decimal_to_binary(7)
Loading