Advertisement
Guest User

Evolución de Hola Mundo

a guest
Jan 23rd, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.10 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. """Programa que permite al usuario ingresar el saludo e imprimirlo en pantalla"""
  5. """source: http://www.solocodigoweb.com/blog/2017/05/10/la-evolucion-del-ingeniero-de-software/"""
  6.  
  7. __author__ = 'Gonzalo Chacaltana Buleje'
  8. __email__ = "gchacaltanab@outlook.com"
  9. __copyright__ = "Copyright 2017, HelloWorld"
  10. __credits__ = ["Pepito", "Jaimito"]
  11. __license__ = "GPL"
  12. __version__ = "1.0.1"
  13. __maintainer__ = "Gonzalo Chacaltana"
  14. __status__ = "Production"
  15.  
  16. import sys
  17.  
  18. class HelloWorld(object):
  19.     """Clase HelloWorld
  20.    Attributes:
  21.        greeting (None): Atributo que almacena el mensaje Hola Mundo.
  22.    """
  23.     greeting = None
  24.     initial_greeting = "hola"
  25.  
  26.     def __init__(self, greeting):
  27.         """Método constructor de la Clase HelloWorld
  28.        Args:
  29.            greeting (str): Argumento enviado al instanciar la clase.
  30.        """
  31.         self.greeting = self.set_greeting(greeting.strip())
  32.  
  33.     def set_greeting(self, greeting):
  34.         """Método que asigna el saludo ingresado por la consola al
  35.         atributo self.greeting
  36.        Args:
  37.            greeting (str): Saludo ingresado por consola
  38.        """
  39.         if (self.validate_greeting_two_words(greeting)):
  40.             if (self.validate_greeting_first_word(greeting)):
  41.                 return greeting
  42.  
  43.     def validate_greeting_two_words(self, greeting):
  44.         """Método que valida que el saludo este compuesto por 2 palabras.
  45.        Args:
  46.            greeting (str): Saludo ingresado por consola
  47.        """
  48.         words = greeting.split(" ")
  49.         if (len(words) != 2):
  50.             raise ErrorNotGreeting("El texto ingresado no contiene 2 palabras.")
  51.         return True
  52.  
  53.     def validate_greeting_first_word(self, greeting):
  54.         """Método que valida que el saludo inicie con la palabra Hola
  55.        Args:
  56.            greeting (str): Saludo ingresado por consola
  57.        """
  58.         words = greeting.split(" ")
  59.         if words[0].lower() == self.initial_greeting:
  60.                 self.greeting = greeting
  61.         else:
  62.             raise ErrorNotGreeting("La primera palabra del saludo no es Hola")
  63.  
  64.         return True
  65.  
  66.     def print(self):
  67.         """Método que imprime el mensaje Hola Mundo en pantalla
  68.        Returns:
  69.            (str) : Mensaje Hola Mundo
  70.        """
  71.         print ("\n" + str(self.greeting))
  72.         sys.stdout.flush()
  73.  
  74. class ErrorNotGreeting(Exception):
  75.     """Clase ErrorNotGreeting
  76.    
  77.     Clase creada para capturar los errores que devuelva la validación
  78.     del saludo ingresado.
  79.    Attributes:
  80.        message (str): Atributo que almacena el mensaje de la Exception
  81.    """
  82.     message = ""
  83.     def __init__(self, message):
  84.         """Método constructor de la Clase ErrorNotGreeting
  85.        Args:
  86.            message (str): Argumento enviado al instanciar la clase.
  87.        """
  88.         self.message = message
  89.  
  90. if __name__ == '__main__':
  91.     # :Example:
  92.     # >> helloWorld.py "Hola Gonzalo"
  93.     try:
  94.         # Enviamos como parametro el primer valor enviado por consola
  95.         # Instanciamos la clase HelloWorld
  96.         obj = HelloWorld(sys.argv[1])
  97.         #Imprimimos el mensaje enviado por el usuario.
  98.         obj.print()
  99.     except ErrorNotGreeting as ex:
  100.         print (ex.message)
  101.     except IndexError:
  102.         print ("Ingrese el saludo al ejecutar el programa.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement