Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
Cargando

Autor Tema: Apuntes de Python 3.0 (anexo III al cap V): Solución de los ejercicios  (Leído 1265 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado L00PeR

  • Conociendo la comunidad [L2]
  • **
  • Topic Author
  • Mensajes: 144
    • Ver Perfil
[El anexo II de ejercicios del capítulo V lo puedes encontrar en:http://www.hackxcrack.es/forum/index.php?topic=7063.0]

¡Hola a todos!

Después de dejar un tiempo para que maldigais y echeis pestes por la boca os pongo mi resolución de los programas propuestos en el anexo II del capítulo V.

Como ya creo que teneis algo de soltura con Python, esta vez no voy a comentar paso por paso la resoluicón. Entre otras cosas porque así os lo vais a encontrar cuando leais código ajeno. Vereis que la mayoría del código poseen comentarios que os ayudarán a comprenderlo. Es vuestra propia comprensión del lenguaje de programación más la ayuda puntual de esos comentarios -que como norma para vuestros propios programas debería existir- lo que nos ayudará a comprender cómo el programador a planteado su solución del problema. Y esto es muy importante: Es la solución propuesta por un programador. Recordad que pueden existir muchas más soluciones; tantas como programadores existan. Algunas serán más elegantes, otras más toscas... unas mejores que otras en cuestión de optimización y/o legibilidad del código.

No pretendais que os salga el "programa perfecto" de buenas a primeras. De hecho es utópico. No existe. Y vosotros lo sabeis mucho mejor que nadie, asumiendo la temática del foro en que nos encontramos.

Sin más dilación paso a presentaros esos códigos que os han estado dando quebraderos de cabeza a alguno. No os preocupeis y practicad. Si no sale a la primera, ni a la segunda, ni a la tercera... En este tipo de cosas hay que ser como las mulas ... tozudos... :P :P :P


Solución al primer ejercicio
Aquí teneis el código fuente del programa ('asciiart.py') que imprime tal cual un ASCII Art:

Código: [Seleccionar]
#!/usr/bin/env python

# Programa que imprime en pantalla un ASCII art
# especificado por el usuario introduciendo el nombre de un archivo.
#
# Programado por : L00PeR
# para           : Tutorial hackXcrack

# Pedimos el nombre del archivo
# No controlamos condiciones de error introducidas por el usuario
archivo = input("Introduce el archivo ASCII art a cargar: ")

try:
    # Intentamos cargar el archivo en modo lectura
    AsciiFile = open(archivo, "r");

    # Leemos linea a linea el archivo hasta que lleguemos a su fin
    while True:
        # Recogemos la linea y la imprimimos
        linea = AsciiFile.readline()
        print(linea, end="")

        # Salimos del bucle infinito. Hemos encontrado el fin de fichero
        if not linea:
            break; 
   
    AsciiFile.close() # Cerramos el archivo
except:
    # El sistema por alguna razon no encuentra el archivo. Puede que incluso este dañado
    print ("Fichero no encontrado.")
   
La salida de este programa cuando usamos el archivo 'homer.asc' sería esta:

Código: [Seleccionar]
 >>> 
Introduce el archivo ASCII art a cargar: homer.asc
................................................................................
............. ......=OMMNN87....................................................
...... ..+8~.:ZNN?IIIIIIIIIII??IO...............................................
.......$    ..8I?IIIIIIIIIIIIIII?ID:............................................
......7. ...7IIIIIIIIIIIIIIIIIIIIIII+M..........................................
... ..M,..MI?IIIIIIIIIIIIIIIIIIIIIIIII?N........................................
....I~...DIIIIIIIIIIIIIIIIIIIIIIIIIIII?I??I?+M..................................
...8....7IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII?I???O8..............................
..~...=N?IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIID............................
..8. .MZIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII?+...........................
..N..,I??IIIIIIIIIIIIIIIIIIIIIIIIIIIII?DI?I?II?DMM..,~ .........................
...D.8IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII?IIM??N........I..........................
....D?IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII?I?ON.. ...Z?II7,.........................
....MMIIIIIIIIIIIIIIIIIIIIIIIIIIIII??D:....8...??IIIIII.........................
....D?IIIIIIIIIIIIIIIIII?IIIIIII??N........~..DIIIIIII?.........................
....8?IIIIIIIIIIIIIIIII??IIIIIII7MN.........I?I?IIIIII?.........................
....MIIIIIIIIIIIIIIIII??MI?III?D.. ........7?IIIIIII?I7+=:....  ................
.. .=?IIIIIIIIIIIIIIIII?I?IIII:............OIIIIIIII+D??????+$D.................
.....MIIIIIIIIIIIIIIIIIIIN?I7.............N??IIIIID??++??????????OO.............
......?I?IIIIIIIIIIIIIIIIIZ?.............MIIIIIID??????????????????+N...........
......,??IIIIIIIIIIIIIIIIIIM.. ........=$II?II$??????????????????????,..........
........$IIIIIIIIIIIIIIIIII?I?D,.. .$DI?IIII7+??????????????????INO??+..........
...... ..NIII??M??IIIIIIIIIII???IIIII?IIIIIZ???????????????=8+ . ND?+...........
...........Z?III7?D?I?IIIIIIIIIIIIIIIIII?N+??????????????O....  ND+?,...........
............NIII?OI?M?IIIIIIIIIIIIIIIIIIN??????????????,....8:..N??.  ..........
........... :.N?II8I??+O?IIIIIIIIIIIII?O????????????D..... N .D??7. ............
............ Z.7M?ID??IIIIIIIIIIIIIIII8???????????+.. ZMM..:N++Z................
...........  .:...87ZIIIIIIIIIIIIIIII8???????????N.. +M,..=???N.................
...............N....DM??IIIIIIIIIIIIN??????????O...+MM?.O+??N. .................
...................:??I?I??IIIIIIII++?????????N...MMM..7+?+:....................
...................N??MZIII?IIIIII+I????????I~.. 7MMM.M?+M,.....................
...................=I?I??II?MIIIIIN????????+7.. NMMMMM??M ......................
....................77II?II??IIIII$????????=.?MMMMMMM+?N........................
.........................O?IIIIII?+???????D..MMMMMMMM??,........................
.........................,IIIIIII????????N,?MMMMMMMMM??.........................
..........................?IIIII?I??????+MMMMMMMMMMMM+?+O$......................
..........................?IIIIII7??????MMMMMMMMOZ8MMNM???Z.....................
..........................IIIIIII??????7MZZZZZZZ8ZZZZ=???+I.....................
..........................IIIIIII?+????DZZZZZZZZZZZZZM???8......................
..........................?IIIIIIIM????+ZZZZZZZZZZZZZO+?? ......................
..........................?IIIIIIIIM?????MZ7~~8ZZZZZZM??........................
..........................?IIIIIIIIINI??????~~~MZZZZ8~?.........................
...................... .+,?IIIIIIIIII?7I+???:~~~~??:~:..........................
........................ :?IIIIIIIII?II?D???~~~~~:~~::=.........................
.................... .,.. ~N?IIIIIIIIIIIII??~~$::~~~~~M. N......................
.................... .~.......M?II??IIIIIIIIIIII:?~~~+?..  .....................
.....................7.....  ....=N?I?IIIIIIIIII?I::?+IM7  ,,...................
.................... ?............. ...ZM??I?IIII???I?Z~... ~...................
............................................DIIII??IIIM?...... .................
....................?O.....................N,.7II?IIII7.8....M..................
........... ....IONN8..M...................~...IIIIII+...: ..7..................
....... ..N=...........I,.$. . ...........:.....N?III$..... .I +M.. ............
.......::.    . .........I .8+............M.. ...MIIIN... +..8. .. N............
..... :.................. ,:.  I7............... .D??N...  M.M. ..  .N. ........
.. .$.......................,......,N= ..M,........DI+......~.D........~= ......
...? ...................... :.......  ..:...........$.......  .=.......  N .....
  . .........................$....................... ........  ~..........O,...
.M........................... ..................................+.......... Z. .
. ............................8..................................~......... .8 .
>>>


Solución al segundo ejercicio
La cosa la complicamos... 'Codificamos' el archivo ASCII Art con este otro programa ('asciiartcreatecoded.py'):

Código: [Seleccionar]
#!/usr/bin/env python

# Programa que codifica un ASCII art especificado por el usuario
# introduciendo el nombre de un archivo.
#
# Programado por : L00PeR
# para           : Tutorial hackXcrack

# Pedimos el nombre de los archivos
# No controlamos condiciones de error introducidas por el usuario
archivo = input("Introduce el archivo ASCII art a cargar: ")
archivo2 = input("Introduce el archivo ASCII art codificado a crear: ")

try:
    # Intentamos cargar el archivo en modo lectura
    # y crear el archivo codificado en modo escritura
    AsciiFile = open(archivo, "r")
    AsciiCodedFile = open(archivo2, "w")

    # Leemos linea a linea el archivo hasta que lleguemos a su fin
    while True:
        linea = AsciiFile.readline() # Recogemos la linea

        # Salimos del bucle infinito. Hemos encontrado el fin de fichero
        if not linea: break

        pixelAnt = linea[0] # Inicializamos valores
        cont = 0

        # Recorremos cada linea encontrando paquetes de caracteres iguales
        for x in range(0, len(linea)):
            pixelAct = linea[x]
           
            if pixelAct == pixelAnt:
                # Mientras el "pixel" (caracter) se igual al anterior sumamos
                # cuantos caracteres iguales encontramos
                cont = cont + 1
            else:
                # Ya no son iguales. Lo juntamos en una expresion tipo: [NumCaracteres]'[caracter]';
                AsciiCodedFile.write(str(cont)+ "'" + pixelAnt + "';")
                pixelAnt = pixelAct
                cont = 1

        # Nueva linea. Grabamos el salto   
        AsciiCodedFile.write('\n')
       
    AsciiFile.close()       # Cerramos los archivos
    AsciiCodedFile.close()
except:
    # Algun fichero ha fallado
    print ("Fichero no encontrado.\n")

El programa funcionaria así:

Código: [Seleccionar]
>>> 
Introduce el archivo ASCII art a cargar: homer.asc
Introduce el archivo ASCII art codificado a crear: homercoded.asc
>>>

El archivo codificado tiene esta pinta:

Código: [Seleccionar]
80'.';
13'.';1' ';6'.';1'=';1'O';2'M';2'N';1'8';1'7';52'.';
6'.';1' ';2'.';1'+';1'8';1'~';1'.';1':';1'Z';2'N';1'?';11'I';2'?';1'I';1'O';47'.';
7'.';1'$';4' ';2'.';1'8';1'I';1'?';15'I';1'?';1'I';1'D';1':';44'.';
6'.';1'7';1'.';1' ';3'.';1'7';23'I';1'+';1'M';42'.';
3'.';1' ';2'.';1'M';1',';2'.';1'M';1'I';1'?';25'I';1'?';1'N';40'.';
4'.';1'I';1'~';3'.';1'D';28'I';1'?';1'I';2'?';1'I';1'?';1'+';1'M';34'.';
3'.';1'8';4'.';1'7';34'I';1'?';1'I';3'?';1'O';1'8';30'.';
2'.';1'~';3'.';1'=';1'N';1'?';42'I';1'D';28'.';
2'.';1'8';1'.';1' ';1'.';1'M';1'Z';43'I';1'?';1'+';27'.';
2'.';1'N';2'.';1',';1'I';2'?';29'I';1'?';1'D';1'I';1'?';1'I';1'?';2'I';1'?';1'D';2'M';2'.';1',';1'~';1' ';25'.';
3'.';1'D';1'.';1'8';32'I';1'?';2'I';1'M';2'?';1'N';8'.';1'I';26'.';
4'.';1'D';1'?';32'I';1'?';1'I';1'?';1'O';1'N';2'.';1' ';3'.';1'Z';1'?';2'I';1'7';1',';25'.';
4'.';2'M';29'I';2'?';1'D';1':';4'.';1'8';3'.';2'?';6'I';25'.';
4'.';1'D';1'?';18'I';1'?';7'I';2'?';1'N';8'.';1'~';2'.';1'D';7'I';1'?';25'.';
4'.';1'8';1'?';17'I';2'?';7'I';1'7';1'M';1'N';9'.';1'I';1'?';1'I';1'?';6'I';1'?';25'.';
4'.';1'M';17'I';2'?';1'M';1'I';1'?';3'I';1'?';1'D';2'.';1' ';8'.';1'7';1'?';7'I';1'?';1'I';1'7';1'+';1'=';1':';4'.';2' ';16'.';
2'.';1' ';1'.';1'=';1'?';17'I';1'?';1'I';1'?';4'I';1':';12'.';1'O';8'I';1'+';1'D';6'?';1'+';1'$';1'D';17'.';
5'.';1'M';19'I';1'N';1'?';1'I';1'7';13'.';1'N';2'?';5'I';1'D';2'?';2'+';10'?';2'O';13'.';
6'.';1'?';1'I';1'?';17'I';1'Z';1'?';13'.';1'M';6'I';1'D';18'?';1'+';1'N';11'.';
6'.';1',';2'?';18'I';1'M';2'.';1' ';8'.';1'=';1'$';2'I';1'?';2'I';1'$';22'?';1',';10'.';
8'.';1'$';18'I';1'?';1'I';1'?';1'D';1',';2'.';1' ';1'.';1'$';1'D';1'I';1'?';4'I';1'7';1'+';18'?';1'I';1'N';1'O';2'?';1'+';10'.';
6'.';1' ';2'.';1'N';3'I';2'?';1'M';2'?';11'I';3'?';5'I';1'?';5'I';1'Z';15'?';1'=';1'8';1'+';1' ';1'.';1' ';1'N';1'D';1'?';1'+';11'.';
11'.';1'Z';1'?';3'I';1'7';1'?';1'D';1'?';1'I';1'?';18'I';1'?';1'N';1'+';14'?';1'O';4'.';2' ';1'N';1'D';1'+';1'?';1',';11'.';
12'.';1'N';3'I';1'?';1'O';1'I';1'?';1'M';1'?';18'I';1'N';14'?';1',';4'.';1'8';1':';2'.';1'N';2'?';1'.';2' ';10'.';
11'.';1' ';1':';1'.';1'N';1'?';2'I';1'8';1'I';2'?';1'+';1'O';1'?';13'I';1'?';1'O';12'?';1'D';5'.';1' ';1'N';1' ';1'.';1'D';2'?';1'7';1'.';1' ';12'.';
12'.';1' ';1'Z';1'.';1'7';1'M';1'?';1'I';1'D';2'?';16'I';1'8';11'?';1'+';2'.';1' ';1'Z';2'M';2'.';1':';1'N';2'+';1'Z';16'.';
11'.';2' ';1'.';1':';3'.';1'8';1'7';1'Z';16'I';1'8';11'?';1'N';2'.';1' ';1'+';1'M';1',';2'.';1'=';3'?';1'N';17'.';
15'.';1'N';4'.';1'D';1'M';2'?';12'I';1'N';10'?';1'O';3'.';1'+';2'M';1'?';1'.';1'O';1'+';2'?';1'N';1'.';1' ';17'.';
19'.';1':';2'?';1'I';1'?';1'I';2'?';8'I';2'+';9'?';1'N';3'.';3'M';2'.';1'7';1'+';1'?';1'+';1':';20'.';
19'.';1'N';2'?';1'M';1'Z';3'I';1'?';6'I';1'+';1'I';8'?';1'I';1'~';2'.';1' ';1'7';3'M';1'.';1'M';1'?';1'+';1'M';1',';21'.';
19'.';1'=';1'I';1'?';1'I';2'?';2'I';1'?';1'M';5'I';1'N';8'?';1'+';1'7';2'.';1' ';1'N';5'M';2'?';1'M';1' ';22'.';
20'.';2'7';2'I';1'?';2'I';2'?';5'I';1'$';8'?';1'=';1'.';1'?';7'M';1'+';1'?';1'N';24'.';
25'.';1'O';1'?';6'I';1'?';1'+';7'?';1'D';2'.';8'M';2'?';1',';24'.';
25'.';1',';7'I';8'?';1'N';1',';1'?';9'M';2'?';25'.';
26'.';1'?';5'I';1'?';1'I';6'?';1'+';12'M';1'+';1'?';1'+';1'O';1'$';22'.';
26'.';1'?';6'I';1'7';6'?';8'M';1'O';1'Z';1'8';2'M';1'N';1'M';3'?';1'Z';21'.';
26'.';7'I';6'?';1'7';1'M';7'Z';1'8';4'Z';1'=';3'?';1'+';1'I';21'.';
26'.';7'I';1'?';1'+';4'?';1'D';13'Z';1'M';3'?';1'8';22'.';
26'.';1'?';7'I';1'M';4'?';1'+';13'Z';1'O';1'+';2'?';1' ';22'.';
26'.';1'?';8'I';1'M';5'?';1'M';1'Z';1'7';2'~';1'8';6'Z';1'M';2'?';24'.';
26'.';1'?';9'I';1'N';1'I';6'?';3'~';1'M';4'Z';1'8';1'~';1'?';25'.';
22'.';1' ';1'.';1'+';1',';1'?';10'I';1'?';1'7';1'I';1'+';3'?';1':';4'~';2'?';1':';1'~';1':';26'.';
24'.';1' ';1':';1'?';9'I';1'?';2'I';1'?';1'D';3'?';5'~';1':';2'~';2':';1'=';25'.';
20'.';1' ';1'.';1',';2'.';1' ';1'~';1'N';1'?';13'I';2'?';2'~';1'$';2':';5'~';1'M';1'.';1' ';1'N';22'.';
20'.';1' ';1'.';1'~';7'.';1'M';1'?';2'I';2'?';12'I';1':';1'?';3'~';1'+';1'?';2'.';2' ';21'.';
21'.';1'7';5'.';2' ';4'.';1'=';1'N';1'?';1'I';1'?';10'I';1'?';1'I';2':';1'?';1'+';1'I';1'M';1'7';2' ';2',';19'.';
20'.';1' ';1'?';13'.';1' ';3'.';1'Z';1'M';2'?';1'I';1'?';4'I';3'?';1'I';1'?';1'Z';1'~';3'.';1' ';1'~';19'.';
44'.';1'D';4'I';2'?';3'I';1'M';1'?';6'.';1' ';17'.';
20'.';1'?';1'O';21'.';1'N';1',';1'.';1'7';2'I';1'?';4'I';1'7';1'.';1'8';4'.';1'M';18'.';
11'.';1' ';4'.';1'I';1'O';2'N';1'8';2'.';1'M';19'.';1'~';3'.';6'I';1'+';3'.';1':';1' ';2'.';1'7';18'.';
7'.';1' ';2'.';1'N';1'=';11'.';1'I';1',';1'.';1'$';1'.';1' ';1'.';1' ';11'.';1':';5'.';1'N';1'?';3'I';1'$';5'.';1' ';1'.';1'I';1' ';1'+';1'M';2'.';1' ';12'.';
7'.';2':';1'.';4' ';1'.';1' ';9'.';1'I';1' ';1'.';1'8';1'+';12'.';1'M';2'.';1' ';3'.';1'M';3'I';1'N';3'.';1' ';1'+';2'.';1'8';1'.';1' ';2'.';1' ';1'N';12'.';
5'.';1' ';1':';18'.';1' ';1',';1':';1'.';2' ';1'I';1'7';15'.';1' ';1'.';1'D';2'?';1'N';3'.';2' ';1'M';1'.';1'M';1'.';1' ';2'.';2' ';1'.';1'N';1'.';1' ';8'.';
2'.';1' ';1'.';1'$';23'.';1',';6'.';1',';1'N';1'=';1' ';2'.';1'M';1',';8'.';1'D';1'I';1'+';6'.';1'~';1'.';1'D';8'.';1'~';1'=';1' ';6'.';
3'.';1'?';1' ';22'.';1' ';1':';7'.';2' ';2'.';1':';11'.';1'$';7'.';2' ';1'.';1'=';7'.';2' ';1'N';1' ';5'.';
2' ';1'.';1' ';25'.';1'$';23'.';1' ';8'.';2' ';1'~';10'.';1'O';1',';3'.';
1'.';1'M';27'.';1' ';34'.';1'+';10'.';1' ';1'Z';1'.';1' ';1'.';
1'.';1' ';28'.';1'8';34'.';1'~';9'.';1' ';1'.';1'8';1' ';


Solución al tercer ejercicio
Por último tenemos el programa 'decodificador' de ASCII Art 'codificado' ('asciiartcoded.py'):

Código: [Seleccionar]
#!/usr/bin/env python

# Programa que imprime en pantalla un ASCII art especificado por el usuario
# introduciendo el nombre de un archivo.
#
# Programado por : L00PeR
# para           : Tutorial hackXcrack

# Pedimos el nombre del archivo
# No controlamos condiciones de error introducidas por el usuario
archivo = input("Introduce el archivo ASCII art a cargar: ")

try:
    # Intentamos cargar el archivo en modo lectura
    AsciiFile = open(archivo, "r")

    # Leemos linea a linea el archivo hasta que lleguemos a su fin
    while True:
        lineaFile = AsciiFile.readline() # Recogemos la linea

        if not lineaFile:
            break # Salimos del bucle infinito. Hemos encontrado el fin de fichero

        # Separamos las lineas en bloques de numero y caracter a imprimir
        for lineaChar in lineaFile.split(";"):
            valores = lineaChar.rsplit("'")
           
            if len(valores) > 1:
                # Si el bloque es del estilo [valor, caracter] lo imprimimos
                print(valores[1] * (int(valores[0])), end='')
            else:
                # El bloque solo consta de un caracter salto de linea '\n'
                print(valores[0], end='')

    AsciiFile.close() # Cerramos el archivo
except:
    # El fichero ha fallado
    print ("Fichero no encontrado.\n")
   
Que funciona decodificando nuestro 'homercoded.asc'...

Y como bonus pack esta es la imagen 'oculta' en el archivo 'imagencodificada.asc' que hemos decodificado usando el programa anterior:

Código: [Seleccionar]
>>> 
Introduce el archivo ASCII art a cargar: imagencodificada.asc
................................................................................
................................................................................
................................................................................
......................................................?MMMMMMMMMMM:.............
..............ZMMMMMMMMMMM=........................8MMO~.. ..... :DMM...........
...........MMMMMMMMM8I=$8MMMN ..................DM...................MM.........
.........MMMMMM+~?ODZI......:MM+..............$...........IODD7:.......M........
.......=MMMMMMMMMMMMMMMMMM8.... M....................$MMMMMMMMMMMMM8....O.......
......:MMMMMMMMMMMMMMMMMMMMMM8....................ZMMMMMMMM$..... .NMZ...Z......
......MMMMMMMMMMMM..... :MMMMMMM=..............,MMMMMMM..............IM..,......
.....NMMMMMMMMMM:..........OMMMMMM............NMMMMMD,................ O........
....:MMMMMMMMMM............MMMMMMMM..........MMMMMO ....................$.......
....OMMMMMMMMM7.............7MMMMMM=.........MMMN.......................:.......
....MMMMMMMMMM,...............MMMMN.....................................~.......
....MMMMMMMMMM................MMMMMM+...................................M.......
...:MMMMMMMMMM:MMMMMMMMMM+...MMMMMMMM?................=MMMMMMMMMN+ ....:D.......
...$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.............ZMMMMMMMMMMMMMMMM.:M:........
...8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:..........OMMMMMMMMMMMMMMMMN .. O........
...MMMMMMMMMMMM...:=O88Z7?=:MMMMMMMMMM=.............:~=7OOO7+~....O.....8.......
...MMMMMMMMMMMMDMMZ=,...=$DMD?MMMMMMMM:........... MMN7:....=8MM+........M......
...MMMMMMMMMMMMO.... . .......~MMMMMMM:.................   ..............?7.....
...MMMMMMMMMMMM:...............MMMMMMM...................................,M.....
...8MMMMMMMMMMM...............~MMMMMMM....................................M.....
...7MMMMMMMMMM+...............MMMMMMMM....................................M:....
...=MMMMMMMMMM..............8MMMMMMMMM....................................M:....
... MMMMMMMMM$........... DMMMMMMMMMMM...................................:M.....
....MMMMMMMMM:......~MMMMMMMMMMMMMMMMM...................................MM.....
....MMMMMMMMM8......8MMMMMMMMMMMMMMMMM..................................MM,.....
....OMMMMMMMMM7.....IMMMMMMMMMMMMMMMMM..............=.................DMM+......
.....MMMMMMMMMMD... MMMMMMMMMMMMMMMMMM.................D$ .........DMMMM........
.....MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD....... .?~..........+MMMMMMMMMMM.........
.....=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM..... MMMMMM ...........MMMM.~MM..........
......MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ...............MMMM?..M7..........
......7MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN ...........~MMMMI..8M....,......
.......MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .........MMMMM$..:M.....,......
.......7MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM?:::~=?NMMMMM7.. M~....+.......
........MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~.MMMMMMMMMMMMMMMMMMMN,...8Z.....,.......
........:MMMMMMMMMMMMMMMMMMMMMMMMMMMMM....NMMMMMMMMMMMMMMMMO....IN.....N........
.........DMMMMMMMMMMMMMMD~$DMMMMMMMM+......:MMMMMMM8D7~.........M.....M ........
..........MMMMMMMMMMMMMMMM+,DMMMMMMMMMMMMMMMMMMMMMM8...........M.....M,.........
...........MMMMMMMMMMMMMMMMM=........ . ... .............+....M ....M...........
............MMMMMMMMMMMMMMMMMMM=.....................,NO ....M ....D............
.............MMMMMMMMMMMMMMMMMMMMMM8$?=:...:=$DMMMMD=. .....N ....D,............
..............MMMMMMMMMMMMMMMMMMMM7:??7777$$7~.............D.....M..............
.............. MMMMMMMMMMMMMMMMMM ...MMMMMMM..............Z ....M...............
................MMMMMMMMMMMMMMMM~.....MMMMM .............I ...:M................
.................IMMMMMMMMMMMMMM.....:MMMMM .................MM.................
...................MMMMMMMMMMMMZ.....MMMMMMM................MI..................
....................MMMMMMMMMMMN....MMMMMMMMM.............:M?...................
.................... MMMMMMMMMMM....MMMMMMMMM............MM.....................
......................?MMMMMMMMM7...MMMMMMMMM..........ZMO......................
........................MMMMMMMMM=..MMMMMMMMM........:MM........................
..........................MMMMMMMM?.8MMMMMMMM.......MM: ........................
...........................ZMMMMMMMM MMMMMMM:.... MMN...........................
.............................OMMMMMMMMMMMMMM...~MMM.............................
...............................:MMMMMMMMMMMMMMMMD...............................
...................................~ZMMMMMM87: .................................
......................................OMMMM ....................................
.......................................DMM,.....................................
................................................................................

>>>


Epílogo
Espero que haya sido un reto interesante para vosotros. Se que al principio estos retos parecen imposibles pero como veis no lo son tanto, solo requieren de un poco de paciencia y un mucho de trabajo mental.

Espero feedback de vuestras impresiones para que los próximos ejercicios sean más o menos tan interesantes como éstos, que mi trabajo me ha costado imaginar qué se puede hacer con los conocimientos que teneis hasta ahora y que al menos tengan algún de aliciente...

¡Nos vemos en el proximo capítulo de esta serie de "Apuntes sobre Python 3.0"!

Saludos

[Puedes volver al capítulo V en este enlace:http://www.hackxcrack.es/forum/index.php?topic=6710.0]
« última modificación: Noviembre 04, 2011, 09:59:58 am por L00PeR »

Desconectado $francisco

  • Moderador
  • *****
  • Mensajes: 289
    • Ver Perfil
Re:Apuntes de Python 3.0 (anexo III al cap V): Solución de los ejercicios
« Respuesta #1 en: Junio 30, 2012, 02:17:30 am »
muchas gracias looper la peña no agradece despues de tantas visitas jeje, pedazo recopilatorio de python 3.0, apuntes de todo, gracias.

Desconectado 3t4n

  • Ladrón de espacio en la BD [L0]
  • *
  • Mensajes: 15
  • No existe gran talento sin gran voluntad. -
    • Ver Perfil
Re:Apuntes de Python 3.0 (anexo III al cap V): Solución de los ejercicios
« Respuesta #2 en: Febrero 27, 2013, 02:36:48 am »
Están excelentes las soluciones, te felicito, espero que hagas más, claro para apoyarme.
Saludos :)
« última modificación: Febrero 27, 2013, 02:38:45 am por 3t4n »


No existe gran talento sin gran voluntad.
- Honoré de Balzac