SoloCodigo

Programación Web y Scripting => Python => Mensaje iniciado por: xcodigo en Viernes 22 de Febrero de 2008, 10:55

Título: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 10:55
El codigo "indentado" "desdentado" de python confunde un poco. ¿alguien me puede explicar un poco mejor su uso y error?  ;)
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Viernes 22 de Febrero de 2008, 13:51
La identación de código te sirve para saber donde finalizan las rutinas que programas, ya que Python no utiliza formatos para inicio y final de de estas, te sirve como las "{}" en C ó el "BEGIN - END" de Pascal, solamente que Python te obliga a que identes tú código para saber donde empieza y finaliza la instrucción.

Leete la Guía de estilo del código Python (http://mundogeek.net/traducciones/guia-estilo-python.htm) escrito por el mismo Guido y Barry Warsaw
Título: Re: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 18:35
Siguiendo este sencillo guia:

numero = 23
adivina = int(raw_entrada('Ingresa un numero entero : '))

if adivina == numero:
   print 'Felicitaciones, haz adivinado.' # el nuevo bloque comienza aqui
   print "(pero no ganaste ningun premio!)" # el nuevo bloque termina aqui
elif guess < number:
        print 'No, el numero es mayor.' # otro bloque
        # Puedes hacer lo que deseas en un bloque ...
else:
   imprime 'No, el numero es menor.'
   # debes adivinar...
print 'Hecho'
# Esta ultima sentencia siempre se ejecuta, después de que la sentencia if
# es ejecutada.
       
El editor PythonWin envia un error de este modo:

>>> numero = 23
>>> adivina = int(raw_entrada(´Ingresa un numero entero:´))
Traceback (  File "<interactive input>", line 1
    adivina = int (raw_entrada(´Ingresa un numero entero:´))
                               ^
SyntaxError: invalid syntax
>>>

Perdona por mi ignorancia de principiante. Podria dar mas detalles sobre el tema
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Viernes 22 de Febrero de 2008, 19:35
No es "raw_entrada", es "raw_input".

Después del if, elif y else se comienza la identación, ósea, colocar por lo menos un espacio después el próximo código.
Título: Re: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 20:58
Bueno, eso mismo de raw_input que es el codigo correcto. Pero esta pagina enseña al reves  ;) dev.laptop.org/~edsiper/byteofpython_spanish/ch06s02.html


Aun asi me dice lo mismo el editor:

>>> numero = 23
>>> adivina = int(raw_input(´Ingresa un numero entero :´))
Traceback (  File "<interactive input>", line 1
    adivina = int(raw_input(´Ingresa un numero entero :´))
                            ^
SyntaxError: invalid syntax
>>>
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Viernes 22 de Febrero de 2008, 21:18
adivina = int(raw_input('Ingresa un numero entero :'))

Estabas usando un tipo de comilla diferente, puedes usar comilla simple o doble.
Título: Re: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 22:08
:huh:   :o   :D  MI teclado me esta jugando una mala jugada  :lol:

¿alguna diferencia usando comilla simple o doble para python?
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Viernes 22 de Febrero de 2008, 22:10
Cita de: "xcodigo"
:huh:   :o   :D  MI teclado me esta jugando una mala jugada  :lol:

¿alguna diferencia usando comilla simple o doble para python?
No que yo sepa.
Título: Re: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 22:49
Mmmmm...Si me explicara un poco de sintaxis...
Los tutoriales que tiene en los sitios al editarlo aparece con error. Ejemplo de este encontrado:

>>> while a < 10 :
...     print a
...     a = a + 3
...
1
4
7

A mi me da con el editor pythonWin:

>>> while a < 10 :
...    print a
...    a = a + 3
...    
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
NameError: name 'a' is not defined
>>>

O el editor esta malo o no logro aclarlo bien?  :whistling:
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Viernes 22 de Febrero de 2008, 23:01
Declara antes del while la variable a, así:

a = 0
while a < 10 :
  print a
  a = a + 3

Haz lo que te explican en las listas de aditel, identa con 4 espacios y no con tabulador, aunque muchos IDE lo hacen automático.
Título: Re: Codigo Indentado
Publicado por: xcodigo en Viernes 22 de Febrero de 2008, 23:32
:huh:  Esta forma si funciona... Tambien me salio diferente al resultado de tutorial :

>>> a = 0
>>> while a < 10:
...    print a
...    a = a + 3
...    
0
3
6
9
>>>

Codigo obtenido en " un poco de sintaxis" users.servicios.retecal.es/tjavier/python/intpython/x196.html  :comp:
Título: Re: Codigo Indentado
Publicado por: RadicalEd en Sábado 23 de Febrero de 2008, 15:19
Según la página la variable se inicializo con 1 y no con 0.
Título: Re: Codigo Indentado
Publicado por: xcodigo en Sábado 23 de Febrero de 2008, 16:28
:lol: