lunes, 27 de julio de 2020

Imprimir con color

Reto: Imprimir con color

Generar aleatoriamente la nota de diez alumnos. Calcular la media e imprimir en pantalla la nota de cada uno y la desviación de cada una de las notas respecto a la media. Los que estén por encima o por debajo de la media se imprimen en colores diferentes.



Vamos a imprimir el texto de Python en colores usando diferentes librerías.
  • de la librería termcolor usamos colored
  • usamos la librería colorama

Método 1

Creamos un diccionario con las diez notas. Luego sumamos los values de diccionario.

import random
from termcolor import colored
notas={1:random.randint(0,100)/10,2:random.randint(0,100)/10,3:random.randint(0,100)/10,4:random.randint(0,100)/10,5:random.randint(0,100)/10,6:random.randint(0,100)/10,7:random.randint(0,100)/10,8:random.randint(0,100)/10,9:random.randint(0,100)/10,10:random.randint(0,100)/10}
print(notas)
suma=sum(notas.values())
media=round(suma/len(notas),4)
print('media:',media)
for i in range(1,10):
  if notas[i]>media:
    print(notas[i], 'y su desviación es:', colored(round(notas[i]-media,4), 'green'))
  elif notas[i]<media:
    print(notas[i], 'y su desviación es:', colored(round(notas[i]-media,4), 'red'))



Método 2

Es un método similar al anterior pero ahora creamos una lista con las diez notas. Luego sumamos los valores de los elementos de la lista.

import random
from termcolor import colored
notas=[] #inicilizamos una lista donde almacenaremos las notas
suma=0 #inicializamos la variable suma que acumulará las notas
for i in range(10):
  x=random.randint(0,10) #generamos aleatorios enteros entre 0 y 10
  notas.append(x) #añadimos las notas a la lista
  suma+=x #acumulamos todas las notas
print(notas)
media=suma/len(notas)
print("La media es:",round(media,4))
for i in range(10):
  if notas[i]>media:
    print(colored("{}. Nota: {}. Desviación: {}".format(i+1,notas[i],round(notas[i]-media,4)),'green'))
  else:
    print(colored("{}. Nota: {}. Desviación: {}".format(i+1,notas[i],round(notas[i]-media,4)),'red'))



Método 3

En esta ocasión utilizamos la librería colorama.

import random # Se importa el módulo para números aleatorios
from colorama import init, Fore, Back, Style # Módulo para textos y fondo a color
init()
L=[]
for i in range(10):
  x=random.randint(1,9) # Crea números aleatorios de 1 al 9
  z=random.randint(1,10)
  d=z/10
  w=x+d
  L.append(w) # llena la lista L
print(L) # Imprime la lista L con las notas aleatorias
suma=0
for k in range(10):
  suma+=L[k]
media=suma/10 # Saca el promedio
print('La media es :',round(media,2))
D_M=[]
for j in range(10):
  D_M.append(round(abs(L[j] - media),2)) # Llena la lista con la desviación con respecto a la media
  if L[j]<=media:
    print(Fore.RED + str(L[j]) + ' ~ ' + str(round(D_M[j],2))) # Imprime en rojo las notas menores que la media
  else:
    print(Fore.GREEN + str(L[j]) + ' ~ ' + str(round(D_M[j],2)))


1 comentario:

  1. import random, names
    import numpy as np
    from colorama import Fore

    randomNotes = [random.randint(0, 10) for _ in range(10)]
    names = [ names.get_first_name() for _ in range(len(randomNotes))]
    standard_deviation = round(np.std(randomNotes), 2)
    media = np.average(randomNotes)
    print("The average: ", media)
    print("standard deviation: ", (standard_deviation))
    for n, note in zip(names, randomNotes):
    dif = round(note - standard_deviation,2 )
    if note < 6:
    print( Fore.RED + 'The student {0} obtained {1}, the difference with respect to the average is {2} '.format(n, note, dif))
    else:
    print( Fore.GREEN + 'The student {0} obtained {1}, the difference with respect to the average is {2} '.format(n, note, dif))

    ResponderEliminar