Problema con comentar bloques en Python 3 (Resuelto)

Iniciado por lucas25cba, 28 Octubre 2015, 14:02 PM

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

lucas25cba

Buenas!
Recién empiezo y ya estoy mareado...  :P
Una duda:
Tengo el siguiente programa sacado de un tutorial:

Citar#parahumanos.py

SUFIJOS = {1000: [ 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ] ,
          1024: [ 'KiB ' , 'MiB ' , 'GiB ' , 'TiB ' , 'PiB ' , 'EiB ' , ' ZiB ' ,
                  'YiB ' ]}

def tamanyo_aproximado(tamanyo , un_kilobyte_es_1024_bytes=True ):
   ''' Convierte un tamaño de fichero en formato legible por personas

    Argumentos/parámetros:
    tamanyo __ tamaño de fichero en bytes
    un_kilobyte_es_1024_bytes __ si True (por defecto),
                                 usa múltiplos de 1024
                                 si False, usa múltiplos de 1000

    retorna : string

    '''    
   
   if tamanyo < 0 :
       raise ValueError ("el número debe ser no negativo")

   multiplo = 1024 if un_kilobyte_es_1024_bytes else 1000
   for sufijo in SUFIJOS [multiplo]:
       tamanyo /= multiplo
       if tamanyo < multiplo:
           return ' {0:.1f} {1} ' . format ( tamanyo , sufijo)

   raise ValueError ( 'número demasiado grande ' )

if __name__ == '__ main__':
   print (tamanyo_aproximado (1000000000000 , False))
   print (tamanyo_aproximado (1000000000000) )

Estoy usando Eclipse con PyDev
Al intentar interpretar dicho programa, me larga:
CitarFile "C:\Users\Usuario\Downloads\LABORATORIO\PYTHON\paraHumanos\src\paraHumanos.py", line 8
SyntaxError: Non-UTF-8 code starting with '\xf1' in file C:\Users\Usuario\Downloads\LABORATORIO\PYTHON\paraHumanos\src\paraHumanos.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


(La linea 8 es
Citar''' Convierte un tamaño de fichero en formato legible por personas

Si quito las triples comillas simples y pongo al comienzo de cada linea del bloque de comentarios el simbolo "#", sale el mismo error...


lucas25cba

Perdon! Paso el codigo como corresponde, no como una cita! Si que estoy mareado  :P

Código (python) [Seleccionar]
#parahumanos.py

SUFIJOS = {1000: [ 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ] ,
           1024: [ 'KiB ' , 'MiB ' , 'GiB ' , 'TiB ' , 'PiB ' , 'EiB ' , ' ZiB ' ,
                   'YiB ' ]}

def tamanyo_aproximado(tamanyo , un_kilobyte_es_1024_bytes=True ):
    ''' Convierte un tamaño de fichero en formato legible por personas

     Argumentos/parámetros:
     tamanyo __ tamaño de fichero en bytes
     un_kilobyte_es_1024_bytes __ si True (por defecto),
                                  usa múltiplos de 1024
                                  si False, usa múltiplos de 1000

     retorna : string

     '''   
   
    if tamanyo < 0 :
        raise ValueError ("el número debe ser no negativo")

    multiplo = 1024 if un_kilobyte_es_1024_bytes else 1000
    for sufijo in SUFIJOS [multiplo]:
        tamanyo /= multiplo
        if tamanyo < multiplo:
            return ' {0:.1f} {1} ' . format ( tamanyo , sufijo)

    raise ValueError ( 'número demasiado grande ' )

if __name__ == '__ main__':
    print (tamanyo_aproximado (1000000000000 , False))
    print (tamanyo_aproximado (1000000000000) )




Pablo Videla

#2
Coloca esto en la cabecera de tu archivo
Código (python) [Seleccionar]
#!/usr/bin/python
# -*- coding: utf-8 -*-


El problema es que estas usando tildes en los comentarios, y necesitas decirle explictamente que use el encoding utf8 para que entienda esos tildes.

De hecho si ingresas a la pagina que te sale en el error te explica ahí detalladamente.
https://www.python.org/dev/peps/pep-0263/
CitarDefining the Encoding
    Python will default to ASCII as standard encoding if no other
    encoding hints are given.

    To define a source code encoding, a magic comment must
    be placed into the source files either as first or second
    line in the file, such as:

          # coding=<encoding name>

    or (using formats recognized by popular editors)

          #!/usr/bin/python
          # -*- coding: <encoding name> -*-

    or

          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :