Está en la página 1de 13

9/17/2020 Taller2_chap03_exercises - Jupyter Notebook

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í

Num Div by 2 and/or 3?


--- ------------------
2 by 2
3 by 3
4 by 2
5 neither
6 both
7 neither

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')

Num Dic by 2 and/or 3?


--- ------------------
2 by 2
3 by 3
4 by 2
5 neither
6 both
7 neither
8 by 2
9 by 3
10 by 2
11 neither
12 both
13 neither
14 by 2
15 by 3
16 by 2
17 neither
18 both
19 neither
20 by 2

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

x1 es igual a 8.772001872658766 y x2 es igual a 0.2279981273412348


Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 0 0 7
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: 8 0 0
x1 es igual a 0.0 y x2 es igual a -0.0
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 1 0 0
x1 es igual a 0.0 y x2 es igual a -0.0
Por favor inserte los valores de a, b y c de la ecuacion cuadratica separados con espacios, ceros para termi
nar: 0 0 0
Gracias por usar el programa

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

Digite dos numeros enteros, digite dos ceros para parar 4 6


Minimo comun multiplo de 4 y 6 es 12
Digite dos numeros enteros, digite dos ceros para parar 1 8
Minimo comun multiplo de 1 y 8 es 8
Digite dos numeros enteros, digite dos ceros para parar 3 9
Minimo comun multiplo de 3 y 9 es 9
Digite dos numeros enteros, digite dos ceros para parar 0 6

localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 6/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook

Solo se aceptan numeros mayores a 0


Digite dos numeros enteros, digite dos ceros para parar 56 36
Minimo comun multiplo de 56 y 36 es 504
Digite dos numeros enteros, digite dos ceros para parar 7 7
Minimo comun multiplo de 7 y 7 es 7
Digite dos numeros enteros, digite dos ceros para parar 0 0
gracias por usar el programa

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

Escriba un programa simple de Python para 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 (por ejemplo, 0 a 0.1,
0.1 a 0.2, etc.). Imprima el número total de veces para cada rango en la pantalla. Este es un ejemplo de cómo se puede ver la salida del
programa:

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

for k in range(10000): #Generamos los 10000 numeros aleatorios


aleatorio = np.random.random()
if aleatorio <= 0.1: #Definimos el número en el intervalo correspondiente
a += 1
elif 0.1 < aleatorio <= 0.2:
b += 1
elif 0.2 < aleatorio <= 0.3:
c += 1
elif 0.3 < aleatorio <= 0.4:
d += 1
elif 0.4 < aleatorio <= 0.5:
e += 1
elif 0.5 < aleatorio <= 0.6:
f += 1
elif 0.6 < aleatorio <= 0.7:
g += 1
elif 0.7 < aleatorio <= 0.8:
h += 1
elif 0.8 < aleatorio <= 0.9:
i += 1
elif aleatorio > 0.9:
j += 1
print(f' De 0 a 0,1 hay {a} numeros \n De 0,1 a 0,2 hay {b} numeros \n De 0,2 a 0,3 hay {c} numeros \n De 0,3 a
#Imprimimos la respuesta

localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 9/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook

De 0 a 0,1 hay 985 numeros


De 0,1 a 0,2 hay 1057 numeros
De 0,2 a 0,3 hay 986 numeros
De 0,3 a 0,4 hay 962 numeros
De 0,4 a 0,5 hay 976 numeros
De 0,5 a 0,6 hay 1037 numeros
De 0,6 a 0,7 hay 980 numeros
De 0,7 a 0,8 hay 1023 numeros
De 0,8 a 0,9 hay 975 numeros
De 0,9 a 1 hay 1019 numeros

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

radio del núcleo interno


radio hasta el tope del núcleo externo
radio hasta el moho (límite manto-corteza)
Para todos los anteriores, determine su espesor.
La atmósfera (la parte más densa) tiene 16 km de espesor. Cuál es el espesor en nuestro ejemplo?

Espesores en km para cada capa


𝑇𝑐𝑟𝑢𝑠𝑡 = 25,
𝑇𝑚𝑎𝑛𝑡𝑙𝑒 = 2900,
𝑇𝑜𝑐𝑜𝑟𝑒 = 2250,
𝑇𝑖𝑐𝑜𝑟𝑒 = 1196,

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)} ')

Capa | Grosor tierra(Km) | Equivalente balon(cm)


____________|___________________|______________________
Corteza | 25.00| 0.05
Manto | 2900.00| 5.52
Nucleo ext | 2250.00| 4.28
localhost:8888/notebooks/Documents/Geoinformatica/Taller2_chap03_exercises.ipynb 11/13
9/17/2020 Taller2_chap03_exercises - Jupyter Notebook

Nucleo int | 1196.00| 2.28


Atmosfera | 16.00| 0.03
R Nucleo ext| 3446.00| 6.56
R Moho | 6346.00| 12.08

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

También podría gustarte