In [ ]:
"""
IPython Notebook v4.0 para python 2.7
Librerías adicionales: Ninguna.
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. (c) Sebastian Flores.
"""
# Configuracion para recargar módulos y librerías
%reload_ext autoreload
%autoreload 2
from IPython.core.display import HTML
HTML(open("style/iwi131.css", "r").read())
In [ ]:
c=int(raw_input("ingrese numero:"))
n=1
while n<=10:
p=c*n
print p,
n=n+1
In [ ]:
# Solución
N = int(raw_input("Ingrese un numero: "))
M = 20
j = 1
while j<=M:
print N, "x", j, "=", N*j
j += 1
Escriba un programa que genere todas las potencias de 2, desde la 0-ésima hasta la ingresada por el usuario:
Ingrese num: 10
1 2 4 8 16 32 64 128 256 512 1024
In [ ]:
N=int(raw_input("ingrese un numero: "))
j=0
while j<=N:
print 2**j,
j+=1
In [ ]:
# Solución
N = int(raw_input("Ingrese num: "))
j = 0
while j<=N:
print 2**j,
j += 1
Escriba un programa que pida al usuario dos números enteros, y luego entregue la suma de todos los números que están entre ellos. Por ejemplo, si los números son 1 y 7, debe entregar como resultado 2 + 3 + 4 + 5 + 6 = 20.
Ingrese num: 1
Ingrese num: 7
La suma es 20
In [ ]:
# Solucion estudiantes
n = int(raw_input("ingrese primer numero: "))
m = int(raw_input("ingrese segundo numero: "))
j = n + 1
suma = 0
while j < m:
suma = suma + j
j = j + 1
print "la suma entre los numeros", n, "y", m, "es", suma
In [ ]:
# Solucion
def print_suma(N,M):
j = N+1
suma = 0
while j<M:
suma = suma + j
j += 1
print "La suma es ", suma
return suma
n = int(raw_input("Ingrese num: "))
m = int(raw_input("Ingrese num: "))
print_suma(n,m)
Escriba un programa que muestre una tabla de multiplicar como la siguiente:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Los números deben estar alineados a la derecha.
In [ ]:
# Solución estudiantes
In [ ]:
i = 1
while i<=10:
j = 1
while j<=10:
print "%3d" %(i*j),
#print i*j,
j += 1
print ""
i += 1
In [ ]:
# Solución estudiantes
n=int(raw_input('Ingrese un numero: '))
i=1
while i<=n:
if n%i==0:
print i,
i+=1
In [ ]:
# Solucion
N = int(raw_input("Ingrese numero: "))
j = 1
while j<=N:
if (N%j==0):
print j,
j += 1
Un viajero desea saber cuánto tiempo tomó un viaje que realizó. Él tiene la duración en minutos de cada uno de los tramos del viaje.
Desarrolle un programa que permita ingresar los tiempos de viaje de los tramos y entregue como resultado el tiempo total de viaje en formato horas:minutos.
El programa deja de pedir tiempos de viaje cuando se ingresa un 0.
Un viajero desea saber cuánto tiempo tomó un viaje que realizó. Él tiene la duración en minutos de cada uno de los tramos del viaje.
Desarrolle un programa que permita ingresar los tiempos de viaje de los tramos y entregue como resultado el tiempo total de viaje en formato horas:minutos.
El programa deja de pedir tiempos de viaje cuando se ingresa un 0.
In [ ]:
# Solucion estudiantes
Un viajero desea saber cuánto tiempo tomó un viaje que realizó. Él tiene la duración en minutos de cada uno de los tramos del viaje. Desarrolle un programa que permita ingresar los tiempos de viaje de los tramos y entregue como resultado el tiempo total de viaje en formato horas:minutos.
In [ ]:
duracion_tramo = -1
suma_tramos = 0
while duracion_tramo!=0:
duracion_tramo = int(raw_input("Duracion tramo: "))
suma_tramos += duracion_tramo
horas = suma_tramos/60
minutos = suma_tramos%60
print "Tiempo total de viaje: %d:%2d horas" %(horas, minutos)
In [ ]:
altura = int(raw_input("Altura: "))
ancho = int(raw_input("Ancho: "))
j = 1
while j<=altura:
print "*"*ancho
j += 1
In [ ]:
altura = int(raw_input("Altura: "))
# Mitad superior
j = 1
while j<=altura:
print "*"*(j)
j += 1
In [ ]:
lado = int(raw_input("Lado: "))
# Calculos previos
ancho_max = lado + 2*(lado-1)
# Mitad superior
j = 1
while j<lado:
ancho = lado + 2*j - 2
espacio = (ancho_max - ancho)/2
print " "*espacio + "*"*ancho
j += 1
# Linea del medio
print "*" * ancho_max
# Mitad inferior
j = 1
while j<lado:
espacio = j
ancho = ancho_max - 2*j
print " "*espacio + "*"*ancho
j += 1
Desarrolle un programa para estimar el valor de π usando la siguiente suma infinita:
$$ \pi = 4 \Big(\frac{1}{1} - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + ... \Big)$$La entrada del programa debe ser un número entero n que indique cuántos términos de la suma se utilizará.
n: 3
3.466666666666667
n: 1000
3.140592653839794
Desarrolle un programa para estimar el valor de π usando la siguiente suma infinita:
$$ \pi = 4 \Big(\frac{1}{1} - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + ... \Big)$$La entrada del programa debe ser un número entero n que indique cuántos términos de la suma se utilizará.
In [ ]:
# Solución estudiantes
n = int(raw_input('Ingrese cantidad de terminos: '))
i = 0
suma = 0
termino = 1.0/()
while i < n:
suma += ((-1)**i)*
In [ ]:
M = int(raw_input("n: "))
suma = 0
j = 0
while (j<M):
n = 2*j+1
signo = (-1)**j
x = 4*float(signo)/float(n)
#print signo, n
suma = suma + x
j = j +1
print suma
Desarrolle un programa que permita trabajar con las potencias fraccionales de dos, es decir $ \frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}, \frac{1}{64}, ...$ en forma decimal $ 0.5$, $0.25$, $0.125$, $0.0625$, $0.03125$, $0.015625$, ...
El programa debe mostrar tres columnas que contengan la siguiente información:
Potencia Fraccion Suma
1 0.5 0.5
2 0.25 0.75
3 0.125 0.875
4 0.0625 0.9375
... ... ...
El programa debe terminar cuando la fracción decimal sea menor o igual a 0.000001.
Desarrolle un programa que permita trabajar con las potencias fraccionales de dos, es decir $ \frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}, \frac{1}{64}, ...$ en forma decimal $ 0.5$, $0.25$, $0.125$, $0.0625$, $0.03125$, $0.015625$, ...
El programa debe mostrar tres columnas y debe terminar cuando la fracción decimal sea menor o igual a 0.000001.
Desarrolle un programa que permita trabajar con las potencias fraccionales de dos, es decir $ \frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}, \frac{1}{64}, ...$ en forma decimal $ 0.5$, $0.25$, $0.125$, $0.0625$, $0.03125$, $0.015625$, ...
El programa debe mostrar tres columnas y debe terminar cuando la fracción decimal sea menor o igual a 0.000001.
In [ ]:
# Solución estudiantes
Desarrolle un programa que permita trabajar con las potencias fraccionales de dos, es decir $ \frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}, \frac{1}{64}, ...$ en forma decimal $ 0.5$, $0.25$, $0.125$, $0.0625$, $0.03125$, $0.015625$, ...
El programa debe mostrar tres columnas y debe terminar cuando la fracción decimal sea menor o igual a 0.000001.
In [ ]:
print "Potencia Fraccion Suma"
j = 1
suma = 0
while (1./2**j)>0.00001:
n = 2**j
suma = suma + 1./n
print j, " ", 1./n, " ", suma
j += 1
El número de Euler, $e ≈ 2,71828...$ puede ser representado como la siguiente suma infinita $e=\frac{1}{0!}+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...$
Desarrolle un programa que entregue un valor aproximado de e, calculando esta suma hasta que la diferencia entre dos sumandos consecutivos sea menor que $0,0001$.
Recuerde que el factorial n! es el producto de los números de 1 a n.
El número de Euler, $e ≈ 2,71828...$ puede ser representado como la siguiente suma infinita $e=\frac{1}{0!}+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...$ Desarrolle un programa que entregue un valor aproximado de e, calculando esta suma hasta que la diferencia entre dos sumandos consecutivos sea menor que $0,0001$.
In [ ]:
# Solución estudiantes
In [ ]:
# Solucion
def factorial(n):
j = 1
prod = 1
while j<=n:
prod *= j
j += 1
return prod
e = 1./factorial(0) + 1./factorial(1) + 1./factorial(2)
i = 3
diff = 1.0 # differencia inicial es grande
while (diff > 0.0001):
e += 1./factorial(i)
diff = 1./factorial(i-1) - 1./factorial(i)
i += 1
print e
Usando computadores, se ha verificado que la sucesión efectivamente llega a 1 partiendo desde cualquier número natural menor que $2^{58}$.
Desarrolle un programa que entregue la secuencia de Collatz de un número entero:
n: 18
18 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
n: 19
19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
n: 20
20 10 5 16 8 4 2 1
In [ ]:
# Solucion estudiantes
In [ ]:
# Solución
n = int(raw_input("n: "))
print n,
while n!=1:
if n%2==0:
n = n/2
else:
n = 3*n + 1
print n,
In [ ]:
# Solucion 1
def largo_secuencia_collatz(n):
print "*",
while n!=1:
if n%2==0:
n = n/2
else:
n = 3*n + 1
print "*",
n = int(raw_input("n: "))
j = 1
while j<=n:
print j,
largo_secuencia_collatz(j)
j += 1
print ""
In [ ]:
# Solucion 2
def largo_secuencia_collatz(n):
largo = 1
while n!=1:
if n%2==0:
n = n/2
else:
n = 3*n + 1
largo += 1
return largo
n = int(raw_input("n: "))
j = 1
while j<=n:
print j, "*"*largo_secuencia_collatz(j)
j += 1