La evolución de «Hola Mundo» de un Ingeniero de Software.
Primer día de programación:
print ("Hola Mundo")
Al primer año:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Programa que imprime en pantalla el mensaje Hola Mundo""" class HelloWorld(object): greetings = "Hola Mundo" def __init__(self): pass def print(self): print (self.greetings) obj = HelloWorld() obj.print()
Al segundo año:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Programa que obtiene el saludo de una variable de entorno del SO""" __author__ = 'Gonzalo Chacaltana Buleje' import os class HelloWorld(object): """Clase HelloWorld Attributes: greeting (str): Atributo que almacena el mensaje Hola Mundo. """ greeting = "" def __init__(self): """Método constructor de la Clase HelloWorld Note: greeting (str): Almacena la valor de la variable de entorno HELLO_WORLD """ self.greeting = os.environ['HELLO_WORLD'] def print(self): """Método que imprime el mensaje en pantalla Returns: (str) : Mensaje Hola Mundo """ print (self.greeting) if __name__ == '__main__': # $> helloWorld.py # Instanciamos la clase HelloWorld obj = HelloWorld() #Imprimimos el saludo obj.print()
Al tercer año:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Programa que permite al usuario ingresar el saludo e imprimirlo en pantalla""" __author__ = "Gonzalo Chacaltana Buleje" __version__ = "1.0.1" import sys class HelloWorld(object): """Clase HelloWorld Attributes: greeting (None): Atributo que almacena el mensaje Hola Mundo. """ greeting = None def __init__(self, greeting): """Método constructor de la Clase HelloWorld Args: greeting (str): Argumento enviado al instanciar la clase. """ self.greeting = greeting def print(self): """Método que imprime el mensaje Hola Mundo en pantalla Returns: (str) : Mensaje Hola Mundo """ print ("\n" + self.greeting) if __name__ == '__main__': # $ > helloWorld.py "Hola Gonzalo" try: # Enviamos como parametro el primer valor enviado por consola # Instanciamos la clase HelloWorld obj = HelloWorld(sys.argv[1]) #Imprimimos el mensaje enviado por el usuario. obj.print() except: print ("Debe enviar el mensaje al ejecutar programa.")
Al quinto año:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Programa que permite al usuario ingresar el saludo e imprimirlo en pantalla""" __author__ = 'Gonzalo Chacaltana' __email__ = "[email protected]" __copyright__ = "Copyright 2017, HelloWorld" __credits__ = ["Pepito", "Jaimito"] __license__ = "GPL" __version__ = "1.0.1" __maintainer__ = "Gonzalo Chacaltana" __status__ = "Production" import sys class HelloWorld(object): """Clase HelloWorld Attributes: greeting (None): Atributo que almacena el mensaje Hola Mundo. """ greeting = None initial_greeting = "hola" def __init__(self, greeting): """Método constructor de la Clase HelloWorld Args: greeting (str): Argumento enviado al instanciar la clase. """ self.greeting = self.set_greeting(greeting.strip()) def set_greeting(self, greeting): """Método que asigna el saludo ingresado por la consola al atributo self.greeting Args: greeting (str): Saludo ingresado por consola """ if (self.validate_greeting_two_words(greeting)): if (self.validate_greeting_first_word(greeting)): return greeting def validate_greeting_two_words(self, greeting): """Método que valida que el saludo este compuesto por 2 palabras. Args: greeting (str): Saludo ingresado por consola """ words = greeting.split(" ") if (len(words) != 2): raise ErrorNotGreeting("El texto ingresado no contiene 2 palabras.") return True def validate_greeting_first_word(self, greeting): """Método que valida que el saludo inicie con la palabra Hola Args: greeting (str): Saludo ingresado por consola """ words = greeting.split(" ") if words[0].lower() == self.initial_greeting: self.greeting = greeting else: raise ErrorNotGreeting("La primera palabra del saludo no es Hola") return True def print(self): """Método que imprime el mensaje Hola Mundo en pantalla Returns: (str) : Mensaje Hola Mundo """ print ("\n" + str(self.greeting)) sys.stdout.flush() class ErrorNotGreeting(Exception): """Clase ErrorNotGreeting Clase creada para capturar los errores que devuelva la validación del saludo ingresado. Attributes: message (str): Atributo que almacena el mensaje de la Exception """ message = "" def __init__(self, message): """Método constructor de la Clase ErrorNotGreeting Args: message (str): Argumento enviado al instanciar la clase. """ self.message = message if __name__ == '__main__': # :Example: # $> helloWorld.py "Hola Gonzalo" try: # Enviamos como parametro el primer valor enviado por consola # Instanciamos la clase HelloWorld obj = HelloWorld(sys.argv[1]) #Imprimimos el mensaje enviado por el usuario. obj.print() except ErrorNotGreeting as ex: print (ex.message) except IndexError: print ("Ingrese el saludo al ejecutar el programa.")
Al décimo año:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Programa que imprime en pantalla el mensaje Hola Mundo""" __author__ = 'Gonzalo Chacaltana' __email__ = "[email protected]" class HelloWorld(object): def __init__(self): print ("Hola Mundo") obj = HelloWorld()
Basada sobre la publicación de Sean Hickey.