Errores de Identacion en python

Iniciado por mapers, 30 Marzo 2012, 08:07 AM

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

mapers

Estaba programando en python teniendo como Ide Eclipse pero al parecer hay ciertos errores que son de identacion que no se como resolverlos a simple vista parece que esta bien pero siempre se marcan como rojo :S a que se debe esto o me salte algun capitulo de python de leer gracias

adastra

En Python, las identaciones son importantes, ya que determinan el comienzo y fin de determinadas instrucciones, a diferencia de lenguajes como C/C++,Pascal en los que utilizas {,} BEGIN,END....
Es comun encontrar ese tipo problemas en lenguajes como Python. Intenta identar tu código de forma ordenada para que te funcione correctamente.

Eleкtro

El intérprete de Python te dice donde está el error y la linea que debes indentar.

CitarFile "TEST.Py", line 19
    time.sleep(0.10)
       ^
IndentationError: expected an indented block

Salu2.








Runex

Postea tu código si aun no has solucionado el problema y te ayudaremos :).

Por un lado como dice adastra las iNdentaciones son una parte clave de Python ya que así como en C o PHP las claves '{' indican el principio y el final de algunas funciones, en Python se facilita la tarea con esta indentación.

Así, según te ha dicho EleKtro H@cker el propio intérprete te indica donde aparecen los errores del código.

Y finalmente como observación propia, te aconsejo que utilizes Geany, mucho más liviano que Eclipse y en mi opinión, una mejor opción para escribir códigos en una gran cantidad de lenguajes.

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

polmadur

como ya han comentado el propio interprete te dice la linea del error.

en cuanto al editor, yo tambien te recomiendo geany o ya si trabajas en linux vim, pero eso ya es mas dependiendo de cada persona

un saludo

cgrodriguez

Como puedo corregir errores de identacion en python...?

cgrodriguez

Este es mi codigo a ver si me pueden ayudar

#!/usr/bin/env python
    import os

    from dvbobjects.PSI.PAT import *
    from dvbobjects.PSI.NIT import *
    from dvbobjects.PSI.SDT import *
    from dvbobjects.PSI.PMT import *

    from dvbobjects.SBTVD.Descriptors import *

    tvd_ts_id             = 0x073b
    tvd_orig_network_id   = 0x073b
    ts_freq               = 533
    ts_remote_control_key = 0x05

    tvd_service_id_sd = 0xe760 # ID de servicio de TV Digital.
    tvd_pmt_pid_sd    = 1031   # PID de la PMT del servicio.

    nit = network_information_section (
        network_id = tvd_orig_network_id,
        network_descriptor_loop = [
            network_descriptor(network_name = "LIFIATV",),
            system_management_descriptor(
                broadcasting_flag = 0,
                broadcasting_identifier = 3,
                additional_broadcasting_identification = 0x01,
                additional_identification_bytes = [],
            )
        ],
        transport_stream_loop = [
            transport_stream_loop_item(
            transport_stream_id = tvd_ts_id,
            original_network_id = tvd_orig_network_id,
            transport_descriptor_loop = [
                service_list_descriptor(
                    dvb_service_descriptor_loop = [
                        service_descriptor_loop_item (
                            service_ID = tvd_service_id_sd,
                            service_type = 1,
                        ),
                    ],
                ),
                terrestrial_delivery_system_descriptor(
                    area_code = 1341,
                    guard_interval = 0x01,
                    transmission_mode = 0x02,
                    frequencies = [
                        tds_frequency_item( freq=ts_freq )
                    ],
                ),
                partial_reception_descriptor (
                    service_ids = []
                ),
                transport_stream_information_descriptor (
                    remote_control_key_id = ts_remote_control_key,
                    ts_name = "LIFIATV",
                    transmission_type_loop = [
                        transmission_type_loop_item(
                            transmission_type_info = 0x0F,
                            service_id_loop = [
                                service_id_loop_item(
                                        service_id=tvd_service_id_sd
                            ),
                            ]
                        ),
                        transmission_type_loop_item(
                            transmission_type_info = 0xAF,
                            service_id_loop = [],
                        ),
                     ],
                )
            ],
            ),
        ],
        version_number = 0,
        section_number = 0,
        last_section_number = 0,
    )

    sdt = service_description_section(
        transport_stream_id = tvd_ts_id,
        original_network_id = tvd_orig_network_id,
        service_loop = [
            service_loop_item(
                service_ID = tvd_service_id_sd,
                EIT_schedule_flag = 0,
                EIT_present_following_flag = 0,
                running_status = 4,
                free_CA_mode = 0,
                service_descriptor_loop = [
                    service_descriptor(
                        service_type = 1,
                        service_provider_name = "",
                        service_name = "LFASD",
                    ),
                ],
            ),
        ],
        version_number = 0,
        section_number = 0,
        last_section_number = 0,
    )
    pat = program_association_section(
        transport_stream_id = tvd_ts_id,
        program_loop = [
            program_loop_item(
                # Programa especial para la tabla NIT
                program_number = 0,
                PID = 16,
            ),
            program_loop_item(
                program_number = tvd_service_id_sd,
                PID = tvd_pmt_pid_sd,
            ),
        ],
        version_number = 0,
        section_number = 0,
        last_section_number = 0,
    )
   
    pmt_sd = program_map_section(
        program_number = tvd_service_id_sd,
        PCR_PID = 2064,
        program_info_descriptor_loop = [],
        stream_loop = [
            stream_loop_item(
                stream_type = 2, # mpeg2 video
                elementary_PID = 2064,
                element_info_descriptor_loop =
                ]
            ),
            stream_loop_item(
                stream_type = 3, # mpeg2 audio
                elementary_PID = 2068,
                element_info_descriptor_loop =
            ),
        ],
        version_number = 0,
        section_number = 0,
        last_section_number = 0,
    )
   

    out = open("./nit.sec", "wb")
    out.write(nit.pack())
    out.close()
    os.system("sec2ts 16 < ./nit.sec > ./nit.ts")                                       

    out = open("./pat.sec", "wb")
    out.write(pat.pack())
    out.close()
    os.system("sec2ts 0 < ./pat.sec > ./pat.ts")

    out = open("./sdt.sec", "wb")
    out.write(sdt.pack())
    out.close()
    os.system("sec2ts 17 < ./sdt.sec > ./sdt.ts")

    out = open("./pmt_sd.sec", "wb")
    out.write(pmt_sd.pack())
    out.close()
    os.system("sec2ts " + str(tvd_pmt_pid_sd) +
                " < ./pmt_sd.sec > ./pmt_sd.ts"







tincopasan

jajajaja me causa gracia que escribas:
"Este es mi codigo a ver si me pueden ayudar"
si el código es tuyo, ¿cómo no sabes hacer la indentación?
Ni loco reviso todo el código pero te dire:
como te dijeron Geany está bueno para iniciar
pones todas las sentencias al inicio y ejecutas
cuando falte o sobre la identación el soft te avisa
en Geany la das con el tabulador
basicamente tenes que saber que sentencias piden identacion: ej if, fo,r while
por lo tanto:

print()  #al inicio
if distinto #al inicio
   opcion  #indentación porque está después de if
   while pase algo
      sume 1 #indentacion porque está después de while

eso es basicamente y además hay que diferenciar las funciones

def casa
if puerta abierta
  mensaje(te roban)
  mientras gracias
     cerrrar la puerta

def auto
enciendo el motor
if anda mal
   lo lllevo al cambiapiezas

principal

llamar casa
llamar auto


en forma muy burda es lo más básico a saber de la indentación