Corrección de error EOF en python en Codechef

EOF significa Fin de archivo . Bueno, técnicamente no es un error, más bien una excepción. Esta excepción surge cuando una de las funciones integradas, más comúnmente input(), devuelve el final del archivo (EOF) sin leer ningún dato.

El error EOF se genera en Python en algunos escenarios específicos:

  • A veces, todo lo que el programa intenta hacer es buscar algo y modificarlo. Pero cuando no puede obtener, generará esta excepción.
  • Cuando la función input() se interrumpe tanto en Python 2.7 como en Python 3.6+ , o cuando input() llega al final de un archivo de forma inesperada en Python 2.7.

Todas las excepciones integradas en Python se heredan de la clase BaseException o se extienden de una clase heredada de la misma. La jerarquía de excepción completa de este error es:

BaseException -> Excepción -> EOFError

La mejor práctica para evitar EOF en python mientras se codifica en cualquier plataforma es capturar la excepción, y no necesitamos realizar ninguna acción, así que simplemente pasamos la excepción usando la palabra clave «pasar» en el bloque » excepto» .

Considere el siguiente código para la pregunta en CodeChef K-Foldable String (KFOLD) :

C++

#Python program for the above question
  
#Function to reorder the characters
#of the string
def main():
    t = int(input())
    while t:
  
        # Input variables 
        n, k = map(int, input().split())
        s = input()
        ans = ""
  
        # Initialize dictionary
        s_dict = dict()
        for ch in s:
            s_dict[ch] = s_dict.get(ch, 0) + 1
        q = n// k
        a1 = s_dict['1']// q
        a0 = s_dict['0']// q
  
        # Check for valid conditions
        if(s_dict['1']%2!=0 or s_dict['0']%2!=0 \\
        or s_dict['1']%q!=0 or s_dict['0']%q!=0):
            ans = "Impossible"
  
        # Otherwise update the result
        else:
            st = ('0'*a0) + ('1'*a1)
            st = ('1'*a1) + ('0'*a0)
            part1 = st + st_rev
            ans = part1*(q// 2)
  
        # Print the result for the
        # current test case
        print(ans)
  
        t -= 1
    return
  
# Driver Code
if __name__=="__main__":
    main()

Producción:

Da el error EOF como se muestra a continuación:

La solución al error EOF anterior es encerrar el código en el bloque de prueba y excepción y tratar con la excepción en consecuencia, el enfoque para manejar esta excepción se muestra a continuación:

C++

# Python program for the above question
  
# Function to reorder the characters
#of the string
try : t = int(input())
  
    # Input test cases
    while t:
  
        # Input Variables
        n, k = map(int, input().split())
        s = input()
        ans = ""
  
        # Initialize dictionary
        s_dict = dict()
        for ch in s:
            s_dict[ch] = s_dict.get(ch, 0) + 1
        q = n// k
        a1 = s_dict['1']// q
        a0 = s_dict['0']// q
  
        # Check for valid conditions
        if(s_dict['1']%2!=0 or s_dict['0']%2!=0 \\ 
        or s_dict['1']%q!=0 or s_dict['0']%q!=0):
            ans = "Impossible"
   
        # Otherwise update the result
        else:
            st = ('0'*a0) + ('1'*a1)
            st = ('1'*a1) + ('0'*a0)
            part1 = st + st_rev
            ans = part1*(q// 2)
  
        # Print the result for the
        # current test case
        print(ans)
  
        t -= 1
  
except:
    pass

Producción:

Publicación traducida automáticamente

Artículo escrito por rgndunes y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *