#!/usr/bin/python
# coding: utf-8

#--------------------------------------------------------------------
# Fichero:  r-dm.py
# Objetivo: Calcula el rango y la desviación media de un conjunto de datos
# Autor:    Pedro Reina <pedro@pedroreina.net>
# Fecha:    D.26.11.2023
# Atención: solo se ha probado en Python 2.7
# Licencia: Dominio público
#           https://creativecommons.org/publicdomain/zero/1.0/
#--------------------------------------------------------------------

#------------------------------------------------
# Módulos
#------------------------------------------------

# Para leer la línea de órdenes
import sys

#------------------------------------------------
# Funciones
#------------------------------------------------

#------------------------------------------------
# Cambia un número real por una cadena con coma
def CambiaFormato(Num):
    Cadena = str(Num)
    return Cadena.replace(".", ",")

#------------------------------------------------
# Calcula el valor absoluto de la desviación
def Calcula(Num):
    return abs(Num-Media)

#------------------------------------------------
# El programa
#------------------------------------------------

# Leemos los datos de la línea de órdenes
Datos = sys.argv[1:]

# Los convertimos en números reales
Datos = map(float,Datos);

# Calculamos el rango
Rango = max(Datos)-min(Datos)

# Calculamos la media
Media = sum(Datos)/len(Datos)

# Calculamos los valores absolutos de las desviaciones
Desviaciones = map(Calcula,Datos)

# Calculamos la desviación media
DesviacionMedia = sum(Desviaciones)/len(Datos)

# Damos el resultado
print 'Rango: ' + CambiaFormato(Rango) + u'; desviación media: ' + \
       CambiaFormato(DesviacionMedia)
