Repasa matemáticas con Python (II)

Publicado el 12 septiembre 2010 por Iyanmv @iyanmv

Llevo varios días repasando matemáticas a la vez estoy leyendo el libro Aprenda a pensar como un programador con python. Para ir aplicando y asimilando ambos conceptos voy escribiendo pequeños programas en Python con los conceptos de matemáticas. En esta ocasión le tocó a la geometría plana. En realidad lo único que hace el programa es calcular el área de triángulos, cuadrados y polígonos regulares. Además, en el caso del cuadrado, permite calcular la longitud de la diagonal. Algo muy sencillo pero que permite poner en práctica el uso de condiciones, funciones y conversiones de variables tipo string a númericas (int).

El resultado en Python es este:

#!/usr/bin/env python
# -⁻- coding: UTF-8 -*-

import math

# Esta es una función que asigna un color normal (blanco) en la terminal.
def normal():
  print chr(27)+"[0m"

#Función para generar líneas vacias.
def nLineas(n):
  i=0
  while i != n:
    print
    i=i+1

# Funciones para resolver áreas.
def areaTriangulo(b,h):
  return (b*h)/2.0

def areaCuadrado(l):
  return l**2

def areaRegular(lados,lado,apotema):
  return (lados*lado*apotema)/2.0

def diagonalCuadrado(l):
  return math.sqrt(l**2+l**2)

lados=raw_input(chr(27)+"[0m"+"Escribe con que figura geométrica quieres trabajar (número de lados): ")

#En realidad todo el programa es una gran condición que sigue el orden en que se escribió. En cuanto se cumple una condición el programa se termina o pasa a la siguiente condición.
if int(lados) == 3:
  nLineas(1)
  print "Bien! Trabajaremos con el triangulo"
  print "¿Qué desea hacer?"
  print chr(27)+"[1;34m"+"Calcular área(1)?"
  print chr(27)+"[0m"+"Inserte opción:"
  trianguloOpcion=raw_input()
  nLineas(1)
  if int(trianguloOpcion) == 1:
    base=raw_input(chr(27)+"[1;31m"+"Inserte la longitud de la base: ")
    altura=raw_input("Inserte la altura del triángulo: ")
    nLineas(1)
    print chr(27)+"[1;32m"+'\t', "Resultado: ", areaTriangulo(float(base),float(altura))
    normal()
  else:
    print "Opción inválida"
elif int(lados) == 4:
  print "Bien! Trabajaremos con el cuadrado"
  print "¿Qué desea hacer?"
  print chr(27)+"[1;34m"+"Calcular área(1), longitud de la diagonal(2)?"
  print chr(27)+"[0m"+"Inserte opción:"
  cuadradoOpcion=raw_input()
  nLineas(1)
  if int(cuadradoOpcion) == 1:
    lado=raw_input(chr(27)+"[1;31m"+"Inserte la longitud del lado: ")
    nLineas(1)
    print chr(27)+"[1;32m"+'\t', "Resultado: ", areaCuadrado(float(lado))
    normal()
  elif int(cuadradoOpcion) == 2:
    lado=raw_input(chr(27)+"[1;31m"+"Inserte la longitud del lado: ")
    nLineas(1)
    print chr(27)+"[1;32m"+'\t', "Resultado: ", diagonalCuadrado(float(lado))
    normal()
  else:
    nLineas(1)
    print "Opción invalida"
elif int(lados) > 4:
  print "Se trabajará con poligonos regualares de más de cuatro lados"
  print "¿Qué desea hacer?"
  print chr(27)+"[1;34m"+"Calcular área(1)?"
  print chr(27)+"[0m"+"Inserte opción..."
  opcion=raw_input()
  nLineas(1)
  if int(opcion) == 1:
    apotema=raw_input(chr(27)+"[1;31m"+"Inserte la longitud de la apotema: ")
    lado=raw_input("Inserte la longitud del lado: ")
    nLineas(1)
    print chr(27)+"[1;32m"+'\t', "Resultado: ", areaRegular(int(lados),float(lado),float(apotema))
    normal()
else:
  nLineas(1)
  print "Error! Figura no conocida"

raw_input("Enter para salir")

Seguramente tenga algunos fallos y la sintaxis no sea la más clara posible pero bueno, estoy aprendiendo. Si queréis probarlo lo mejor es copiar el código en un archivo de texto, guardarlo como prueba.py, darle permisos de ejecución (chmod +x prueba.py) y ejecutarlo en una terminal.


Filed under: GNU/Linux, Programación, Python, Software libre