Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: reconFito en 27 Junio 2020, 04:12 am



Título: [Python3] Me podrian explicar el funcionamiento.
Publicado por: reconFito en 27 Junio 2020, 04:12 am
Hola que tal a todos, me encontre este codigo y no termino de entender input.n y los demas usos
que le dan en este codigo.
Crei que era sobreescritura del metodo input pero eso solo lo he visto implementado en clases
no en funciones simples.

Gracias por sus respuestas

Código
  1.  
  2. inputs = """
  3. emanuel
  4. eduardo
  5. nuñez
  6. maliños
  7. """
  8.  
  9.  
  10. def input():
  11.    try:
  12.        input.n += 1
  13.    except Exception:
  14.        input.n = 0
  15.    return inputs.split()[input.n]
  16.  
  17.  
  18. first = input()
  19. second = input()
  20. print(first, second)
  21.  
  22.  
[/size][/size][/size][/size]


Título: Re: [Python3] Me podrian explicar el funcionamiento.
Publicado por: tincopasan en 27 Junio 2020, 12:09 pm
hola:
         no es mi fuerte explicar pero veamos:
no sobreescribe la función input de python, solo que al crear una con el mismo "nombre", está toma el primer valor y la "original" deja de estar presente en este código
Código
  1. try:
  2.        input.n += 1
la primera vez que se ejecuta este código dará una excepción, porque claro input no posee un método o propiedad n
Citar
except Exception:
        input.n = 0
    return inputs.split()[input.n]
lo cual te trae acá y ahora se asigna a input.n el valor 0, a partir de ahora existe input.n
el retorno no es otra cosa que el elemento de una lista a partir del índice que en este caso es 0, o sea el primer elemento de la conversión de la cadena inputs a lista = emanuel, pero recordemos que ahora si existe input.n
la segunda vez que se llama a la función al existir input.n se le asigna el valor 1 y regresa lo mismo que antes salvo que el índice es 1 y se irá incrementando a medida que llames a la función.

perdón sino soy muy claro , pero es simple de entender y se me dificullta de transmitir.

Saludos.