Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capítulo 3 - Ejercicios
Ejercicio 1
Escriba un programa que imprima una lista de números del 2 al 20, y que muestra si el número es divisible por 2, por 3, por ambos o por
ninguno. La salida en pantalla se puede ver algo así
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 1/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [15]: # div2_3.py
# programa imprime una lista de números del 2 al 20,
# y muestre si el número es divisible por 2, por 3,
# por ambos o por ninguno.
print('Num Dic by 2 and/or 3? \n--- ------------------')
#Definimos el rango
for x in range(2,21):
y = x/2
z = x/3
if(y-round(y)==0 and z-round(z)==0): #Números que se pueden dividir por ambos
print('%3.0f'%(x),' both')
elif(y-round(y)==0): #Números que se pueden dividir por 2
print('%3.0f'%(x),' by 2')
elif (z-round(z)==0): #Números que se pueden dividir por 3
print('%3.0f'%(x),' by 3')
else: #Números que nos se pueden dividir por ninguno de lo
print('%3.0f'%(x),' neither')
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 2/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
Ejercicio 2
Escriba un programa que repetidamente le pida al usuario tres valores (reales) a , b , c , para la ecuación cuadrática
𝑎 ∗ 𝑥2 + 𝑏 ∗ 𝑥 + 𝑐 = 0,
Usando la famosa formula para las raíces de este problema, el programa debe reconocer si hay raíces reales y calcular estos valores.
Como resultado, muestre el número de raíces reales y sus valores. El programa debe parar si todos los valores son 0.
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 3/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [3]: # quad_raiz.py
# Usando la formula cuadrática para despejar x
# Entradas: a, b, c
# Salidas: x1 y x2, los dos posibles valores
# La formula es a*x**2+b*x+c = 0
#
import numpy as np
#Pedimos los tres valores reales
while(True):
txt = input('Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, cer
a,b,c = txt.split()
a = float(a)
b = float(b)
c = float(c)
#Definimos las condiciones para que el programa pare
if(a == 0 and (b == 0 and c == 0)):
print('Gracias por usar el programa')
break
#Condicionamos a para que no sea igual a 0
elif a == 0:
print("El valor de a no puede ser 0")
#Solucionamos la ecuación cuadratica
elif(((b**2)-4*a*c)>=0):
x1 = (-b+np.sqrt((b**2)-4*a*c))/(2*a)
x2 = (-b-np.sqrt((b**2)-4*a*c))/(2*a)
print(f'x1 es igual a {x1} y x2 es igual a {x2}')
else:
print('x no existe')
#Imprimimos la respuesta
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 0 1 5
El valor de a no puede ser 0
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 4 0 -1
x1 es igual a 0.5 y x2 es igual a -0.5
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 1 4 0
x1 es igual a 0.0 y x2 es igual a -4.0
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 1 -9 2
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 4/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
Ejercicio 3
Modifique el programa gfc.py para calcular el mínimo común múltiplo (least common multiple en inglés) de dos números enteros.
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 5/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [10]: # mcm.py
# Calcule el mínimo común divisor
# de dos enteros.
a = None
b = None
while(a != 0 or b != 0):
txt = input('Digite dos numeros enteros, digite dos ceros para parar ')
a,b = txt.split()
a = int(a)
b = int(b)
Max = max(a,b)
#Definimos las condiciones para que el programa pare
if (a == 0 and b == 0):
print('gracias por usar el programa')
#Definimos que los numeros sean prositivos mayores a 0
elif(a<1 or b <1):
print('Solo se aceptan numeros mayores a 0')
else:
#Definimos el mcm inicial como la multiplicación de los dos números
mcm = a*b
#Si algunos de los dos numeros se puede dividir por el otro, definimos el mcm como el números mayor
if (a%b==0 or b%a==0):
mcm = max(a,b)
else:
#El intervalo lo definimos desde el numero mayor hasta la multiplición de los dos números con un salto del númer
for i in range(Max,(a*b),Max):
if(i%a==0 and i%b==0):
mcm = i
break
print(f'Minimo comun multiplo de {a} y {b} es',mcm)
#Imprimimos la respuesta
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 6/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
Ejercicio 4
Python con Numpy incluye un modulo para la generación de números aleatorios (llamado np.random ). Abajo se muestra un ejemplo
que imprime en pantalla 2 valores aleatorios entre 0 y 1.
In [4]: # random_example.py
# Genere una lista con valores aleatorios entre 0 y 1
import numpy as np
for i in range(2):
a = np.random.random()
print (a)
0.9035993251698192
0.5021683851615095
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 7/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
0 1009
1 1048
2 1001
3 1038
4 1008
5 959
6 993
7 925
8 1017
9 1002
AYUDA: Cree un arreglo de números enteros (mire el modulo numpy ) con 10 elementos e inicie con ceros. Para cada número aleatorio,
sume una unidad al rango apropiado y así poder adicionar todos los números.
NOTA: En C o Fortran cada vez que corra el programa, Ud. obtendrá siempre la misma serie de números aleatorios. Esto no es muy
buena idea, pero el código para obtener series de números aleatorios distintas cada vez que se corre el programa es complicado. Python
fija la semilla del número aleatorio (seed) con el reloj del computador, así que no debe ser un problema.
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 8/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [43]: # rand_check.py
# generar 10000 números aleatorios entre 0 y 1.
# Realice un test de que tan aleatorio es el generador de números,
# contando el número de veces que el número cae dentro de 10 rangos
# distintos entre 0 y 1.
import numpy as np
a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0
h = 0
i = 0
j = 0
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 9/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
Ejercicio 5
La Tierra de manera general se divide en varias capas, corteza, manto y núcleo (interno y externo). Si la Tierra tiene un radio de 6371
km, y lo comparamos con un balón de Baloncesto (24.26 cm de diámetro): Ponga en una tabla y compare
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 10/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [66]: # tierra_balon.py
# Dado radio de las diferentes interfases,
# compare si la Tierra tuviera el tamaño de un
# balón de Basketball
# Definimos los valores dados en el problema
Tierra = 6371
Tcrust = 25
Tmantle = 2900
Tocore = 2250
Ticore = 1196
Atmosfera = 16
Balon = 24.26/2 #Dividimos entre dos para calcular el radio del balon
#Primero comparamos el radio de la corteza con el balon
Tcrust_Balon = (Balon*Tcrust)/Tierra
#Ahora comparamos con el resto de capas solidas de la Tierra
Tmantle_Balon = (Balon*Tmantle)/Tierra
Ticore_Balon = (Balon*Ticore)/Tierra
Tocore_Balon = (Balon*Tocore)/Tierra
#Calculamos el grosor de la atmosfera
Atmosfera_Balon = (Balon*Atmosfera)/Tierra
#Calculamos el espesor de los radios de la Tierra solicitados
Rocore = Tocore +Ticore
Rmoho = Rocore + Tmantle
Rocore_Balon= Ticore_Balon + Tocore_Balon
Rmoho_Balon = Rocore_Balon + Tmantle_Balon
fmt = '%7.2f'
#Elaboramos la tabla
print(' Capa | Grosor tierra(Km) | Equivalente balon(cm)')
print('____________|___________________|______________________')
print(f' Corteza | {fmt%(Tcrust)}| {fmt%(Tcrust_Balon)} ')
print(f' Manto | {fmt%(Tmantle)}| {fmt%(Tmantle_Balon)} ')
print(f' Nucleo ext | {fmt%(Tocore)}| {fmt%(Tocore_Balon)} ')
print(f' Nucleo int | {fmt%(Ticore)}| {fmt%(Ticore_Balon)} ')
print(f' Atmosfera | {fmt%(Atmosfera)}| {fmt%(Atmosfera_Balon)} ')
print(f'R Nucleo ext| {fmt%(Rocore)}| {fmt%(Rocore_Balon)} ')
print(f' R Moho | {fmt%(Rmoho)}| {fmt%(Rmoho_Balon)} ')
Ejercicio 6
𝑃 ℎ
Calcule la presión en el interior de la Tierra, a diferentes profundidades . Asuma presión hidrostática para la corteza, densidad del
𝜌 𝑔
granito , y que (acc gravedad) es constante.
𝑃 =𝑔∗𝜌∗ℎ
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 12/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook
In [59]: # pres_tierra.py
# Calcule la presión en el interior de la
# Tierra, a diferentes profundidades.
# Asuma presión hidrostática para la corteza,
# densidad del granito, y que g (acc gravedad) es constante.
#
h = None
fmt = '%3.0f'
while(h!=0):
h = float(input('Por favor inserte la profundidad (en kilometros) a la cual desea conocer la presion, insert
if h <= 6371: #Definimos la presión según el diametro
d = 2630 #La densidad del granito se encuentra en Kg/m3
g = 9.8 #La aceleracion gravitacional esta en m/s2
P = g * d * (h*1000) #Calculamos la presión usando la formula dada
print(f'La presion a {h} Km de profundidad es {fmt%(P)} Pascales') #Imprimimos la respuesta
else:
print('Inserte una profundidad menor, !!!La tierra no es tan profunda!!!')
#Si se pide una profundidad mayor a la de la tierra, se solicita una profundidad menor
Por favor inserte la profundidad (en kilometros) a la cual desea conocer la presion, inserte 0 para terminar:
500
La presion a 500 Km de profundidad es 12887000000 Pascales
Por favor inserte la profundidad (en kilometros) a la cual desea conocer la presion, inserte 0 para terminar:
5000
La presion a 5000 Km de profundidad es 128870000000 Pascales
Por favor inserte la profundidad (en kilometros) a la cual desea conocer la presion, inserte 0 para terminar:
0
La presion a 0 Km de profundidad es 0 Pascales
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 13/13