04 Python - Math y Random

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

Contenidos: PHYTON - Módulos Math y Random de la biblioteca Standard


Bibliotecas en Python
A veces, en un determinado programa es necesario efectuar una misma tarea en distintos puntos del programa y, a
menudo, en diferentes programas es necesario efectuar una misma tarea. Para evitar tener que volver a escribir una y
otra vez las mismas instrucciones, casi todos los lenguajes de programación permiten agrupar porciones de programa y
reutilizarlos en un mismo programa o en diferentes programas.
Estas agrupaciones de código fueron inventadas en 1951 por Maurice Wilkes, matemático y físico británico que construyó
en 1949 el EDSAC, el primer ordenador que almacenaba los programas en la propia circuitería del ordenador. Por sus
contribuciones a la informática, Wilkes recibió en 1967 el premio Turing, considerado el premio Nobel de la Informática.
Wilkes bautizó a las agrupaciones de código con el nombre de subrutinas, pero posteriores lenguajes de programación
les han ido dando distintos nombres (subrutinas, procedimientos, funciones, métodos, etc.) y dándoles distintas
características.
Las subrutinas tienen muchas ventajas evidentes:
 ahorrar trabajo: si sabemos cómo realizar una tarea, no es necesario volver a programarla una y otra vez.
 facilitar el mantenimiento: si descubrimos errores en una subrutina, sólo hay que corregirlos en una parte del
programa, sin tener que recordar en cuántos lugares utilizamos el algoritmo.
 simplificar el código: la longitud y complejidad del programa se reducen porque las tareas repetitivas ya no
aparecen en el cuerpo del programa.
 facilitar la creación de programas: el trabajo se puede dividir entre varios programadores (unos escriben las
subrutinas, otros el cuerpo principal del programa, etc.).

Si una subrutina se va a utilizar en un único programa, se suele definir en el propio programa. Pero cuando una subrutina
se va a utilizar en varios programas, no es necesario repetirla en cada programa (se perderían algunas de las ventajas
comentadas anteriormente), sino que se puede incluir en un archivo aparte al que los programas pueden acceder para
recuperar las subrutinas. Estos archivos reciben el nombre de bibliotecas (en español se suele decir mucho librería,
traduciendo incorrectamente el término inglés library).
En Python se utiliza el término función para referirse a las subrutinas y el término módulo para referirse a las bibliotecas.

Todos los conceptos que hemos visto hasta ahora los hemos resuelto utilizando solo la sintaxis que nos provee Python y
un conjunto de funciones básicas que se incluyen automáticamente como por ejemplo son print(), input(), etc.

En Python se incluye una biblioteca extra de funciones, variables, clases etc. que nos facilitan la resolución de problemas
en una gran diversidad de áreas como matemáticas, estadísticas, compresión de datos, internet, interfaces visuales etc.

Veremos en este concepto como se importan algunos módulos de la biblioteca estándar y como se accede a su
funcionalidad.
Algo para tener en cuenta:

En Python, a diferencia de muchos lenguajes, se puede importar la biblioteca completa o solo la función que necesito
de la biblioteca, e inclusive se puede renombrar a la función según nuestra necesidad. Si se importan varias
funciones, los nombres de las funciones deben separarse como comas.

Por ejemplo, la función pow de la librería math calcula el resultado de una potencia dados la base y el exponente, la
función trunc elimina los decimales de cualquier número real.

1er Trimestre - Guia 04 – pág 1


1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB
Ejemplo 1 (importando la biblioteca completa)
import math
print math.pow(5,3) 125

Ejemplo 2 (importando solo la función)


from math import pow
print pow(5,3) 125

Ejemplo 3 (importando solo la función y renombrándola)


from math import pow as potencia
print potencia(5,3) 125

Ejemplo 4 (importando más de una función)


from math import pow, trunc
print pow(5,3) 125
print trunc(1.98765) 1

Módulo random

Generar números enteros: la función randint()

La función randint(a, b) genera un número entero entre a y b, ambos incluidos. a debe ser inferior o igual a b.
from random import randint
print(randint(10, 20)) 12

Generar números enteros: la función randrange()

La función randrange(a, b, c) genera un número entero entre los valores generados por range(a, b, c). La
función randrange() admite uno, dos o tres argumentos.
from random import randrange
print(randrange(10)) 9
#genera números al azar entre 0 y 9 (10 números a partir del 0)

from random import randrange


print(randrange(10, 110)) 61
#genera números al azar entre 10 y 110

from random import randrange


print(randrange(10, 110, 10)) 80
#genera números al azar entre 10 y 110, pero de 10 en 10

1er Trimestre - Guia 04 – pág 2


1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

Generar números decimales: la función random()

La función random() genera un número decimal entre 0 y 1 (puede generar 0, pero no 1).
from random import random
print(random())
0.5310449231726346

Generar números decimales: la función uniform()

La función uniform(a, b) genera un número decimal entre a y b (puede generar a y, debido a la forma de redondear de
Python, puede que genere b o no).
from random import uniform
print(uniform(5, 8))
6.216950987513291

Seleccionar un elemento al azar: la función choice()

La función choice(secuencia) elige un valor al azar en un conjunto de elementos. Los conjuntos de elementos se
escriben como listas, tuplas o ranges, que son tipos de datos que veremos en las próximas guías.
Por ahora entenderemos que si los elementos son constantes se pueden escribir entre paréntesis (tuplas) y son
variables, entre corchetes (listas). Siempre separando los elementos con comas
from random import choice
A = (14, 15, 20, 150)
print(choice(A)) 14

from random import choice


A = ["alfa", "beta", "gamma"]
print(choice(A)) gamma

También permite elegir al azar 1 caracter de una cadena de texto (string)


from random import choice
print(choice("AEIOU")) E

Mezclar los elementos de una lista: la función shuffle()


from random import shuffle
mujeres = ["Ana", "Beatriz", "Oriana", "Oriana", "Delia", "Dora"]
shuffle(mujeres)
print (mujeres)

['Oriana', 'Ana', 'Delia', 'Dora', 'Oriana', 'Beatriz']


Elegir al azar una cierta cantidad de elementos de una lista: la función sample()
import random
A=[1,2,3,4,5,6,7,9,12]
print(random.sample(A,3)) [3, 7, 4]

1er Trimestre - Guia 04 – pág 3


1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

Módulo Math
Si estás escribiendo un programa para realizar tareas específicas como estudiar movimientos en física o simular circuitos
eléctricos, necesitarás trabajar con funciones trigonométricas así como números complejos. En Python, como en muchos
lenguajes no puedes usar estas funciones directamente, puedes acceder a ellas incluyendo dos módulos matemáticos
primero. Estos módulos son math y cmath.

El primero te da acceso a funciones matemáticas para números reales, entre ellas las hiperbólicas, trigonométricas y
logarítmicas, mientras que cmath te permite trabajar con números complejos. El módulo cmath lo estudiaremos más
adelante.

Función Operación matemática Ejemplos Resultados


print math.floor(3.54) 3
math.floor(nº real) Parte entera print math.floor(-3.54) -4
print math.floor (-3) -3
Devuelve el entero más print math.ceil(3.54) 4
math.ceil(nº real) pequeño mayor o igual a un print math.ceil(-3.54) -3
número dado. print math.ceil (-3) -3
Elimina los decimales de
math.trunc(nº real) print math.trunc(1.0256) 1
cualquier número real
Devuelve el valor absoluto de print math.fabs(-5.85) 5.85
math.fabs(nº real)
un número print math.fabs(5.85) 5.85
Devuelve el resultado de la print math.pow(5,3) 125
math.pow(a,b)
potencia en donde a es la base print math.pow(2,-2) 0.25
con a y b nºs reales
y b es el exponente print math.pow(16,1/2) 4
math.sqrt(nº real
Raíz cuadrada de un número print math.sqrt(36) 6
positivo)
Devuelve una aproximación
math.pi print math.pi 3.14159265359
del número π
math.factorial(nº entero Calcula el factorial de un
print math.factorial(5) 120
positivo o 0) número entero positivo o 0
calcula el seno de un ángulo
math.sin(nº real) print math.sin(math.pi/3) 0.866025403784
expresado en radianes
calcula el coseno de un ángulo
math.cos(nº real) print math.cos(math.pi/3) 0.5
expresado en radianes
calcula la tangente de un
math.tan(nº real) print math.tan(math.pi/3) 1.73205080757
ángulo expresado en radianes
cambia la expresión del valor
math.degrees(nº real) de un ángulo de radianes a print math.degrees(3.14159265359) 180.0
grados centesimales
cambia la expresión del valor
math.radians(nº real) de un ángulo de grados print math.radians(180) 3.14159265359
centesimales a radianes
Devuelve el arco seno de un
print math.asin(0.5) 0.523598775598
math.asin(nº real) nº real entre -1 y 1, en
print math.degrees(math.asin(0.5)) 30.0
radianes
Devuelve el arco coseno de un
print math.acos(0.5) 1.0471975512
math.acos(nº real) nº real entre -1 y 1, en
print math.degrees(math.acos(0.5)) 60.0
radianes
Devuelve el arco tangente de print math.atan(1) 0.785398163397
math.atan(nº real)
un número real, en radianes print math.degrees(math.atan(1)) 45.0

1er Trimestre - Guia 04 – pág 4


1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB
Calcula la hipotenusa de un
math.hypot(a,b) triángulo rectángulo print math.hypot(3,4) 5.0
conociendo los dos catetos
eleva el número e al
math.exp(x) print math.exp(5) 148.4131591025766
exponente x
devuelve una aproximación print math.e 2.71828182846
math.e
del número e print math.e**5 148.4131591025766
devuelve el logaritmo natural print math.log(math.e) 1.0
math.log(nº real positivo)
de un nº real positivo print math.log(148.4131591025766) 5.0
math.log(x,a) Calcula el logaritmo en base a
print math.log(8, 2) 3.0
x, a nº reales positivos de x
math.log10 (x) Calcula el logaritmo en base
print math.log10 (100) 2.0
x nº real positivo 10 de x

EJERCICIOS
4.A) Sin ejecutar el código respondé: ¿Qué hace el siguiente programa?
from random import choice
A=["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
print (choice(A),end="")
B=["♠","♣","♥","♦"]
print (choice(B))
Copiá y pegá el código en el IDE para comprobarlo

4.B) Diseñá el juego de la moneda para que el usuario adivine si sale cara o ceca (¡Sí!, se escribe
con “c” https://dle.rae.es/ceca)

4.C) Desarrollá un juego para adivinar un número al azar entre el 1 y el 100. Una vez que
responde, se le dirá si ha acertado, se ha pasado o se ha quedado corto, y se le informará el
número que salió

4.D) JUEGO DE DADOS (1): Escribí un programa que simule un juego en el que dos jugadores
(Tomás y Lucía) tiran un dado. El que saque el valor más alto, gana. Si la puntuación coincide,
empatan.
JUEGO DE DADOS (1) JUEGO DE DADOS (1) JUEGO DE DADOS (1)
Tomás ha sacado un 4. Tomás ha sacado un 4. Tomás ha sacado un 3.
Lucía ha sacado un 4. Lucía ha sacado un 6. Lucía ha sacado un 1.
Han empatado. Ha ganado Lucía. Ha ganado Tomás.

1er Trimestre - Guia 04 – pág 5


1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

4.E) JUEGO DE DADOS (2): Escribí un programa que simule un juego en el que dos jugadores
(Oriana y Joaquín) tiran dos dados. El que saque mayor puntuación total, gana. Si la puntuación
total coincide, gana quien haya sacado el dado con el valor más alto. Si el valor más alto también
coincide, empatan.

JUEGO DE DADOS (2) JUEGO DE DADOS (2) JUEGO DE DADOS (2)


Oriana ha sacado un 4 y un 4. Oriana ha sacado un 2 y un 4. Oriana ha sacado un 3 y un 5.
Joaquín ha sacado un 1 y un 5. Joaquín ha sacado un 1 y un 5. Joaquín ha sacado un 5 y un 3.
Ha ganado Oriana. Ha ganado Joaquín. Han empatado.

4.F) JUEGO DE DADOS (3): Escribí un programa que simule un juego en el que dos jugadores
(Helena y Nehuén) tiran dos dados. El que saque el valor más alto, gana. Si el valor más alto
coincide, decide el otro dado. Si también coincide, empatan.

JUEGO DE DADOS (3) JUEGO DE DADOS (3) JUEGO DE DADOS (3)


Helena ha sacado un 2 y un 5. Helena ha sacado un 2 y un 4. Helena ha sacado un 1 y un 6.
Nehuén ha sacado un 4 y un 4. Nehuén ha sacado un 3 y un 4. Nehuén ha sacado un 6 y un 1.
Ha ganado Helena. Ha ganado Nehuén. Han empatado.

4.G) JUEGO DEL QUINCE: Escribí un programa que simule un juego en el que dos jugadores
(Evangelina y Simón) sacan tres cartas al azar del 1 al 10. Gana el jugador que obtenga la mayor
puntuación total, siempre que no se pase de quince, en cuyo caso el jugador pierde.

JUEGO DEL QUINCE JUEGO DEL QUINCE


Evangelina ha sacado un 1, un 4 y un 8. Evangelina ha sacado un 8, un 2 y un 1.
Simón ha sacado un 8, un 2 y un 3. Simón ha sacado un 8, un 7 y un 2.
Han empatado. Ha ganado Evangelina.

JUEGO DEL QUINCE JUEGO DEL QUINCE


Evangelina ha sacado un 3, un 9 y un 5. Evangelina ha sacado un 7, un 1 y un 1.
Simón ha sacado un 8, un 2 y un 6. Simón ha sacado un 4, un 1 y un 8.
No ha ganado nadie. Ha ganado Simón.

4.H) Desarrollá el juego Piedra, papel, tijera para jugar contra la computadora. El usuario
deberá escribir “piedra”, “papel” o “tijera” en minúscula. De no escribirlo de la manera
adecuada mostrará un mensaje de error.
1er Trimestre - Guia 04 – pág 6
1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

4.I) Utilizá como base el código del ejercicio anterior para desarrollar el juego Piedra, Papel,
Tijera, Lagarto, Spock, para jugar contra la computadora.
EXPLICACIÓN DEL JUEGO: https://www.youtube.com/watch?v=O5j4RGw6fHQ

4.J) Modificá el código del ejercicio 3.H) para utilizar


el número π de la librería math

4.K) Si estudiaste trigonometría, quizá te suene que


tanto el seno de un ángulo de 45° como su coseno
√2
valen ambos , desarrollá un programa para
2
verificarlo.

4.L) Diseñá un programa que calcule de cuántas


maneras se pueden ordenar una cierta cantidad de
elementos en una fila.

4.M) Diseñá un programa que decida si tres lados


forman triángulo o no (“En todo triángulo cada lado
es menor que la suma de los otros dos y mayor que
el valor absoluto de su diferencia”).

4.N) Diseñá un programa que calcule a qué distancia del punto del disparo caerá la bala del
cañón (Suponemos que la altura del cañón es mínima, consideramos que la bala parte desde el
piso). Se ingresa el ángulo del disparo en grados y la velocidad inicial en metros sobre segundos.
La aceleración de la gravedad es de 9.81 m/s2

La fórmula del alcance horizontal en un tiro oblicuo es:

Podés verificar tus resultados en el siguiente simulador:


https://www.calcuvio.com/movimiento-parabolico
1er Trimestre - Guia 04 – pág 7
1er Trimestre – guía 04: Python - Profesora Mariángeles Glavina 4ºB

4.Ñ) diseñar un programa que permita saber si Red podrá chocar contra Leonard.

Datos a ingresar:
 Altura a la que está ubicado Red y0
 Ángulo del disparo, en grados α (debe ser mayor 0 y menor de 90)
 Velocidad del disparo v0
 Altura a la que está ubicado Leonard A
 Distancia en horizontal a la que está ubicado Leonard B
La ecuación de la trayectoria parabólica que describe Leonard es:
𝑔𝑥 2
𝑦 = 𝑦0 + 𝑥 tan 𝛼 − 2
2𝑣0 𝑐𝑜𝑠 2 𝛼

Bibliografía:
 Bahit, E. (2012). ”Curso Python para principiantes.” Buenos Aires: eugeniabahit.com.
 Shokeen, M. (2020). Mathematical Modules in Python - Envato Tuts+ Code Tutorials. Recuperado
desde: https://code.tutsplus.com/series/mathematical-modules-in-python--cms-1116
 Sintes Marco, B. (2020). Introducción a la programación con Python. www.mclibre.org. Recuperado
desde: https://www.mclibre.org/consultar/python/

1er Trimestre - Guia 04 – pág 8

También podría gustarte