Está en la página 1de 5

Taller 3

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.

#div.py
#muestra si los numeros son divisibles por 2, 3, ambos o ninguno

import numpy as np

i = np.arange(2,21)
print ("{:^5}{:^18}".format("Num","Div por 2 y/o 3?"))
print ("{:^6}{:^17}".format("---","-----------------"))
for ang in i :
a = 2
b = 3

if (((ang)%a)!=0 and ((ang)%b) !=0) :


print ("{:^5}{:^18}".format(ang,"ninguno"))
elif (((ang)%a)==0 and ((ang)%b) ==0) :
print ("{:^5}{:^18}".format(ang,"ambos"))
elif (((ang)%a)==0) :
print ("{:^5}{:^18}".format(ang,"por 2"))
elif (((ang)%b)==0) :
print ("{:^5}{:^18}".format(ang,"por 3"))

con resultado:

Num Div por 2 y/o 3?


--- -----------------
2 por 2
3 por 3
4 por 2
5 ninguno
6 ambos
7 ninguno
8 por 2

1
9 por 3
10 por 2
11 ninguno
12 ambos
13 ninguno
14 por 2
15 por 3
16 por 2
17 ninguno
18 ambos
19 ninguno
20 por 2

2. Escriba un programa que repetidamente le pida al usuario tres valores (reales) a, b, c, para la ecuación
cuadrática

a ∗ x2 + b ∗ x + c = 0 (1)

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.

#cua.py
#programa para calcular las raices de una ecuacion cuadratica
#informacion ingresada por el usuario
#ceros para salir

from math import *

for i in range(1000):
intxt = input("ingrese valores (reales) a,b,c, para la ecuacion a*x^2+b*x+c=0; ")
a,b,c = intxt.split()
a = float(a)
b = float(b)
c = float(c)
e = (b**2)-4*a*c

if (a==0 and b==0 and c==0):


break
if (e<0) :

2
print("La ecuacion no tiene raices")
elif(e>0) :
x = (-b+sqrt((b**2)-4*a*c))/(2*a)
y = (-b-sqrt((b**2)-4*a*c))/(2*a)
print ("la ecuacion tiene dos raices", "x1=", x, "y x2=", y)
elif (e==0) :
x = (-b+sqrt((b**2)-4*a*c))/(2*a)
print ("la ecuacion tiene una raiz", "x=", x)

con resultado:

C:\Users\Daniela\Desktop\Geoinformatica\tarea_3\programas_taller_3>cua.py
ingrese valores (reales) a,b,c, para la ecuacion a*x^2+b*x+c=0; 10 3 4
La ecuacion no tiene raices
ingrese valores (reales) a,b,c, para la ecuacion a*x^2+b*x+c=0; 25 30 9
la ecuacion tiene una raiz x= -0.6
ingrese valores (reales) a,b,c, para la ecuacion a*x^2+b*x+c=0; 5 60 7
la ecuacion tiene dos raices x1= -0.11782353205890317 y x2= -11.882176467941097
ingrese valores (reales) a,b,c, para la ecuacion a*x^2+b*x+c=0; 0 0 0

C:\Users\Daniela\Desktop\Geoinformatica\tarea_3\programas_taller_3>

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.

# mcm.py
# calcular el minimo comun multiplo de dos numeros enteros
# mcm utilizando el algoritmo de euclides
for i in range(10):

intxt = input("Ingrese 2 enteros (ceros para parar)= ")


a,b = intxt.split()
a = int(a)
b = int(b)

if (a==0 and b==0):


break
else:
amin = min(a,b)
for j in range(1,amin+1):
if ( (a%j)==0 and (b%j)==0):

3
jmax = j
print ("Minimo comun multiplo = ",a*b/jmax)

con resultado:

C:\Users\Daniela\Desktop\Geoinformatica\tarea_3\programas_taller_3>mcm.py
Ingrese 2 enteros (ceros para parar)= 89 56
Minimo comun multiplo = 4984.0
Ingrese 2 enteros (ceros para parar)= 0 0

C:\Users\Daniela\Desktop\Geoinformatica\tarea_3\programas_taller_3>

4. 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.

# random.py
# Generar una lista de 10000 numeros aleatorios entre 0 y 1
# y contar cuantos numeros caen en cada rango

import random

cont1 = 0
cont2 = 0
cont3 = 0
cont4 = 0
cont5 = 0
cont6 = 0
cont7 = 0
cont8 = 0
cont9 = 0
cont10 = 0

print ("{:^8}{:^18}".format("Rango","Cantidad de numeros"))


print ("{:^8}{:^17}".format("-----","------------------"))
for i in range(10000):
a = random.random()

if (a>=0 and a<0.1) :


cont1 = cont1+1

4
elif (a>=0.1 and a<0.2) :
cont2 = cont2+1
elif (a>=0.2 and a<0.3) :
cont3 = cont3+1
elif (a>=0.3 and a<0.4) :
cont4 = cont4+1
elif (a>=0.4 and a<0.5) :
cont5 = cont5+1
elif (a>=0.5 and a<0.6) :
cont6 = cont6+1
elif (a>=0.6 and a<0.7) :
cont7 = cont7+1
elif (a>=0.7 and a<0.8) :
cont8 = cont8+1
elif (a>=0.8 and a<0.9) :
cont9 = cont9+1
elif (a>=0.9 and a<=1.0) :
cont10 = cont10+1

print ("{:^8}{:^18}".format("0",cont1))
print ("{:^8}{:^18}".format("1",cont2))
print ("{:^8}{:^18}".format("2",cont3))
print ("{:^8}{:^18}".format("3",cont4))
print ("{:^8}{:^18}".format("4",cont5))
print ("{:^8}{:^18}".format("5",cont6))
print ("{:^8}{:^18}".format("6",cont7))
print ("{:^8}{:^18}".format("7",cont8))
print ("{:^8}{:^18}".format("8",cont9))
print ("{:^8}{:^18}".format("9",cont10))

con resultado:
Rango Cantidad de numeros
----- ------------------
0 1014
1 1038
2 944
3 1043
4 1019
5 935
6 984
7 994
8 1032
9 997
Este código no es el mas simple, sin embargo no pude hacerlo utilizando arreglos de números enteros con
el modulo numpy, lo cual habrı́a permitido hacer un código mucho mas corto y practico.

También podría gustarte