AnteriorPosterior

2 - Variables y operaciones aritméticas

Por: Nacho Cabanes
Actualizado: 18-04-2019 09:34
Tiempo de lectura estimado: 13 min.

 

Python

2 - Variables y operaciones aritméticas

Casi cualquier programa "real" partirá de datos que no estén prefijados. Esos datos podrán ser introducidos por el usuario, leídos de un fichero o de una base de datos, descargados de Internet...

Nosotros vamos a empezar por pedir datos al usuario. Esos datos los guardaremos en lo que llamaremos "variables", que son espacios de la memoria de nuestro ordenador a los que les damos un nombre. Por ejemplo, si queremos pedir su nombre al usuario, podríamos hacer:

print("Hola! Dime tu nombre")
nombre = input()
print ("Hola, bienvenido")
print (nombre)

Que se vería así:

El resultado no es bonito, pero funciona. Ya lo mejoraremos.

El resultado de "input" es un texto. Si queremos que se tome como un número, deberemos "convertirlo", usando "int", así:

print ("Dime un numero")
primerNumero = int(input())
print ("Dime otro numero")
segundoNumero = int(input())
print ("Su suma es")
print (primerNumero + segundoNumero)

Ejercicios propuestos:

  • 2.1. Crea un programa que pida al usuario dos números y escriba su producto.

  • 2.2. Crea un programa que pida al usuario dos números y escriba su diferencia (tendrás que usar el símbolo "-").

  • 2.3. Crea un programa que pida al usuario tres números y escriba es resultado de (a+b)*c y a*c+b*c.

(Nota: alguna versión más antigua de Python puede no necesitar "int", y dar por sentado que si queremos sumar dos datos es porque se trata de números).

Los valores de las variables no sólo los puede introducir el usuario, también podemos fijarlos nosotros, como en este ejemplo:

print("Dime el radio")
radio = int(input())
pi = 3.14
longitud = 2 * pi * radio
print ("Longitud de la circunferencia:")
print (longitud)

En este ejemplo hemos usado una variable llamada "pi", y le hemos dado el valor 3.14. Las variables pueden guardar cadenas de texto, números enteros o (como en este caso) números reales, con cifras decimales, además de otros tipos de datos que veremos más adelante. Por eso, el resultado puede tener cifras decimales:

Pero lo que no puede tener cifras decimales en este ejemplo es el radio de la circunferencia, porque estamos usando "int" cuando analizamos lo que introduce el usuario:

Si queremos que el usuario pueda introducir datos numéricos que sí contengan cifras decimales (números reales), podemos usar "float" en vez de "int", así:

print("Dime el radio")
radio = float(input())
pi = 3.14
longitud = 2 * pi * radio
print ("Longitud de la circunferencia:")
print (longitud)

Si tecleamos mal el nombre de alguna variable, el programa no funcionará correctamente, sino que se interrumpirá con un mensaje de error. Por ejemplo, si intentamos utilizar el valor de una variable llamada (incorrectamente) "radi" en vez de "radio":

El resultado sería

Ya hemos visto los operadores aritméticos que se usan para sumar, restar y multiplicar. Pero hay alguna otra operación que puede ser interesante conocer, así que vamos a recopilar todas ellas:

  • + : Suma (20+5 tendría como resultado 25)
  • - : Resta (20-5 sería 15)
  • * : Multiplicación (20*5 daría 100)
  • / : División (21/5 tendría como resultado 4.2)
  • % : Resto de la división, también conocido como "módulo" (21%5 sería 1)
  • ** : Potencia (un número entero elevado a otro: 12**2 sería 144)
  • // : División sin decimales (21//5 sería 4, y 21.0//5.0 sería 4.0)

Ejercicios propuestos:

  • 2.4. Crea un programa que pida al usuario dos números enteros y escriba el resto de dividir el primero entre el segundo.
  • 2.5. Crea un programa que pida al usuario un número entero y responda la correspondiente potencia de 2 (por ejemplo, si introduce 3, la respuesta será 8, que es el resultado de 2 elevado al cubo).
  • 2.6. Crea un programa que pida al usuario dos números reales y escriba su división sin decimales.
  • 2.7. Crea un programa que pida al usuario dos números reales y escriba los decimales que se obtienen al dividirlos (pista: puedes restar su división sin decimales de su división "normal").

Para operaciones un poco más complejas, también tenemos disponibles ciertas funciones matemáticas predefinidas (alguna de las cuales te puede resultar desconocida, según tu nivel de matemáticas). Por ejemplo,

  • math.sqrt(x) devuelve la raíz cuadrada de un número.

  • math.pow(x,y) eleva un número real a otro.

  • math.log(x) calcula el logaritmo natural (o neperiano) de un número.

  • math.exp(x) calcula la exponencial de un número.

  • math.cos(x) calcula el coseno de un cierto ángulo, medido en radianes. También tenemos math.sin para el seno y math.tan para la tangente, así como math.acos, math.asin y math.atan para el arco coseno, arco seno y arco tangente.

  • math.degrees(x) calcula los grados que equivalen a una cierta cantidad de radianes, y math.radians(x) convierte a radianes una cierta cantidad de grados.

  • También tenemos alguna constante que nos puede simplificar la vida: math.pi representa el número "PI" y math.e representa el número "e", la base de los logaritmos naturales.

Para usar estas funciones, nuestro programa deberá empezar con "import math". Por ejemplo, este sería un programa que calculara la raíz cuadrada del número que introduzca el usuario:

import math
print("Dime un número")
n = float(input())
print ("Su raíz es")
print (math.sqrt(n))

Que mostraría:

Ejercicios propuestos:

  • 2.8. Crea un programa que pida al usuario un número real y muestra su raíz cuadrada.
  • 2.9. Crea un programa que pida al usuario un número real y muestra su raíz cuarta (la raíz cuadrada de la raíz cuadrada).
  • 2.10. Crea un programa que muestre el coseno de un ángulo de PI/4 radianes.
  • 2.11. Crea un programa que muestre el coseno de un ángulo de 45 grados.
  • 2.12. Crea un programa que pida al usuario dos números reales y escriba cuánto es el primero elevado al segundo.
  • 2.13. Crea un programa que pida al usuario un número y muestre su raíz cúbica (el resultado de elevarlo a 1/3).

¿Y no podemos escribir varias cosas en la misma línea? Claro que sí. Hay varias formas de hacerlo. Una de ellas es incluir unas llaves donde queramos que aparezca el dato, y luego añadir ".format", así:

import math
print("Dime un número")
n = float(input())
print ("Su raíz es {}".format( math.sqrt(n) ))

Otra forma es indicar que en la primera línea no queremos nada al final de la línea (y así anulamos lo que normalmente sería un "avance de línea"), con lo que la segunda línea aparecerá a continuación de ella:

import math
print("Dime un número")
n = float(input())
print ("Su raíz es ", end="")
print (math.sqrt(n))

Y una tercera forma es no usar "print" sino "sys.stdout.write" cuando no queramos avanzar de línea. Eso supone que tendremos que añadir "import sys" a nuestro programa:

import math
import sys
print("Dime un número")
n = float(input())
sys.stdout.write("Su raíz es ")
print(math.sqrt(n))

¿Y si queremos que el dato se introduzca en la misma línea que muestra el texto de aviso? Podemos no avanzar tras el "print" de cualquiera de las formas anteriores, o bien podemos indicar a "input" el texto que queremos que muestre:

import math
n = float(input("Dime un número: "))
print ("Su raíz es ", end="")
print (math.sqrt(n))

Ejercicios propuestos:

  • 2.12. Crea un programa que pida al usuario dos números enteros. Cada número se debe introducir en la misma línea en la que se avisa al usuario de que introduzca el correspondiente dato. A continuación, se debe mostrar ambos datos y su suma, todo en la misma línea, como en "La suma de 2 y 3 es 5"
  • 2.13. Crea un programa que pida al usuario un ángulo en grados y que muestre (en una misma línea) el valor de su seno, su coseno y su tangente.

88929 visitas desde el 18-04-2019

AnteriorPosterior