Mismo ejercicio, diferentes lenguajes (II)

¡Esta vez es en Python!
Vamos allá: el problema y el algoritmo de la letra del DNI ya los expuse en el post anterior, así que no los repetiré aquí.

Implementación en Python
Bueno, pues aquí está el código sin más.
La primera línea simplemente sirve (bajo sistemas Unix como Linux o MacOS) para indicar la ruta donde el ordenador puede encontrar el intérprete de Python que corra el programa. Si alguna vez has programado un script para bash, sabrás que se les suele llamar “bangs” a este tipo de líneas. No tiene más explicación, puedes tomarlo como algo mecánico.
Importaremos la librería sys para poder leer argumentos de la consola. Este es uno de los refinamientos que sugerí en mi anterior entrada.
Vamos a la chicha: lo primero es la función LetraDNI que recibe un nif y, como se ve en el return, devuelve la letra del string “letra” que corresponda con la operación mod %.
En el main() se lanza esa función para el primer argumento leido en la consola (sys.argv[1]) que se tiene que convertir en un entero, de ahí que se le aplique la función conversora “int“.

Por último, nos encontramos el boilerplate. Sencillamente es un mecanismo de python para identificar el main y por ahora podemos tomarlo como algo mecánico como la linea “bang”.

#!/usr/bin/python -tt
 
 
# Importamos una libreria para tomar los argumentos
import sys
 
 
# Funcion que devuelve la letra DNI del NIF
def LetraDNI (nif):
  letra = 'TRWAGMYFPDXBNJZSQVHLCKE'
  return letra[(nif % 23)]
 
 
# Main del programa
def main ():
  print LetraDNI (int(sys.argv[1]))
 
 
# Standard boilerplate
if __name__ == '__main__':
  main()

La forma correcta de ejecutar este programa desde la consola sería:
$ python dni.py 12341234
Aunque tambien se puede utilizar el estilo tradicional de Unix, gracias a que el propio archivo indica a la máquina donde encontrar el intérprete del lenguaje (más sobre los “shebangs” en la wikipedia):
$ ./dni.py 12341234
En ambos casos, como en las otras implementaciones, el resultado debe ser la letra D.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s