Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Mudereded401 en 16 Enero 2021, 18:00 pm



Título: [Python] Pasar de str a int?
Publicado por: Mudereded401 en 16 Enero 2021, 18:00 pm
 Hola gente!

  Pasa que estaba haciendo mis pruebas en python y me encuentro con que no puedo usar un input para sumar mis variables :/

Código:
def sumar(*args):
    resultado=0
    for resultado_ in args:
        resultado += resultado_
    print(resultado)
    return
a = input("Ingresa 2 numeros a sumar (Separados con un espacio) : ")
sumar(a)

 Hay alguna manera de separar y pasar estos str a int para sumarlos? agradecería vuestra ayuda

 :-\ :huh:


Título: Re: [Python] Pasar de str a int?
Publicado por: EdePC en 16 Enero 2021, 20:13 pm
Tengo entendido que el *args sirve para expandir los parámetros a listas, pero hay que pasarle los parámetros como tales, no un simple texto.

La otra opción es hacer que la función acepte la expansión y se le tiene que pasar una lista expandida:

Código
  1. def sumar(*args):
  2.    resultado = 0
  3.    for resultado_ in args:
  4.        resultado += int(resultado_)
  5.    print(resultado)
  6.    return
  7. a = input("Ingresa 2 numeros a sumar (Separados con un espacio) : ")
  8. sumar( *a.split() )

Y la última opción es considerar de que las funciones en python pueden recibir una Lista como parámetros, entonces pasarle la Lista de una:

Código
  1. def sumar(args):
  2.    resultado = 0
  3.    for resultado_ in args:
  4.        resultado += int(resultado_)
  5.    print(resultado)
  6.    return
  7. a = input("Ingresa 2 numeros a sumar (Separados con un espacio) : ")
  8. sumar( a.split() )

La documentación de Python no es de las mejores, es bueno tenerlo para consulta de referencia del lenguaje o cosas muy puntuales. Para ejemplos y esas cosas es mejor acudir a Internet o a un Notas/Tutoriales, por ejemplo a mi me gusta esta (inglés): https://goalkicker.com/PythonBook/PythonNotesForProfessionals.pdf


Título: Re: [Python] Pasar de str a int?
Publicado por: tincopasan en 16 Enero 2021, 22:00 pm
Citar
Tengo entendido que el *args sirve para expandir los parámetros a listas,

en realidad es que recibe los argumentos en forma de una lista o una tupla en todo caso, o sea:

Código
  1. sumar((1,2,3,4)) #una tupla
  2. sumar([5,6]) # una lista

es lo mismo en cuanto a la funcionalidad.

con respecto a tu código, se puede resumir a:

Código
  1. def sumar(*args): #*args usa listas o tuplas
  2.    return sum(*args) # python ya trae funciones predefinidas
  3.  
  4. a = [int(x) for x in input("Ingresa los números a sumar (Separados con un espacio) : ").split()]
  5. #¿para qué usar *args si solo serán dos números?
  6. # es necesario pasar cadena a entero
  7. print(sumar(a))
  8.  

Edito:
por las dudas, el método int() intenta pasar de cadena a entero

Código
  1. a = int(input("número "))

si ingreso 10 input lo devuelve como cadena, pero al estar dentro del int, devolverá un entero
el problema es que es quisquilloso con la entrada en tu caso no se puede ingresar espacios, lo ideal es ingresar de a un número, pero entonces deberías usar un condicional si es que no sabés cuantos enteros ingresará el usuario, por eso en tu caso simplemente tomamos una lista de caracterés, sacamos los espacios y a la lista de cadenas la pasamos a lista de enteros.


Título: Re: [Python] Pasar de str a int?
Publicado por: Panic0 en 18 Enero 2021, 03:32 am
Hola gente!

  Pasa que estaba haciendo mis pruebas en python y me encuentro con que no puedo usar un input para sumar mis variables :/

Código:
def sumar(*args):
    resultado=0
    for resultado_ in args:
        resultado += resultado_
    print(resultado)
    return
a = input("Ingresa 2 numeros a sumar (Separados con un espacio) : ")
sumar(a)

 Hay alguna manera de separar y pasar estos str a int para sumarlos? agradecería vuestra ayuda

 :-\ :huh:

Estaba por dar una solución pero me ganaron jajaja
Tengo dos preguntas.

1:
Para que sirve el *args y args osea,tengo entendido que cuándo se pone *args es para pasar una cantidad buena de parámetros,pero y el otro?? El args cambia en algo?

2:
veo que la variable llamada "resultado_" le agregaste el guión,si mal me equivoco el guión (_) es para cuándo la variable no se vuelve a usar dentro del for,pero por lo que veo esto cambia cuándo lo agregaste a la variable.

Mas allá de eso,muy lindo tu código.


Título: Re: [Python] Pasar de str a int?
Publicado por: tincopasan en 18 Enero 2021, 03:54 am
Citar
Para que sirve el *args y args osea,tengo entendido que cuándo se pone *args es para pasar una cantidad buena de parámetros,pero y el otro?? El args cambia en algo?

tratá de leer todas las respuestas, *args se utiliza para pasar una cantidad desconocida de argumentos en una lista o una tupla, puede ser uno o "una buena cantidad"

args  sin * es solo el nombre del argumento, podría ser pepito y es lo mismo

Citar
"resultado_" le agregaste el guión,si mal me equivoco el guión (_) es para cuándo la variable no se vuelve a usar dentro del for,

me gustaría saber en que manual leiste eso, en este caso como en muchos otros, cuando se usa al final de la variable, es solo para cambiar la referencia al objeto, en este caso resultado es un objeto referencia a enteros y resultado_ es otro objeto que hace referencia a cadenas que es lo que contiene la lista a 


Título: Re: [Python] Pasar de str a int?
Publicado por: Panic0 en 18 Enero 2021, 04:38 am
tratá de leer todas las respuestas, *args se utiliza para pasar una cantidad desconocida de argumentos en una lista o una tupla, puede ser uno o "una buena cantidad"

args  sin * es solo el nombre del argumento, podría ser pepito y es lo mismo

me gustaría saber en que manual leiste eso, en este caso como en muchos otros, cuando se usa al final de la variable, es solo para cambiar la referencia al objeto, en este caso resultado es un objeto referencia a enteros y resultado_ es otro objeto que hace referencia a cadenas que es lo que contiene la lista a  


Hola,muchas gracias por explicarme
En cuanto a esto
Citar
me gustaría saber en que manual leiste eso
Lo llegué a ver que en muchos lugares dicen eso básicamente,en este caso prefiero tomar tu palabra ya que le tengo mas confianza a un experto (vos) que a otro tipo de persona.

Ah perdón por mi ignorancia,tocará seguir estudiando jajaja  :-[

Y lo del guión lo saque de aquí  ::) https://www.mclibre.org/consultar/python/lecciones/python-for.html


Título: Re: [Python] Pasar de str a int?
Publicado por: tincopasan en 18 Enero 2021, 04:57 am
viendo el link y la explicación:
Código
  1. print("Comienzo")
  2. for _ in [0, 1, 2]:
  3.    print("Hola ", end="")
  4. print()
  5. print("Final")
  6.  

si te fijas usa el _ solo para no poner un nombre específico a la variable y aque no la usa, pero si quisiera también podría hacerlo, no deja de ser una referencia:

Código
  1. print("Comienzo")
  2. for _ in [0, 1, 2]:
  3.    print(_, end="")
  4. print()
  5. print("Final")
  6.  
  7. y no es que no se pueda o deba usar, es una convención para ecribir menos en este caso
  8.  
  9.  
  10.  


Título: Re: [Python] Pasar de str a int?
Publicado por: Danielㅤ en 18 Enero 2021, 08:03 am
Hola, para sumar números en string podes usar la función eval():

Código
  1. numPrimero = "15"
  2. numSegundo = "28"
  3. print(eval(numPrimero + numSegundo))
  4. 43


Saludos



Título: Re: [Python] Pasar de str a int?
Publicado por: Mudereded401 en 18 Enero 2021, 18:53 pm
 Hola! Muchas gracias por vuestras respuestas. Ya pude resolver mi problema con el código:
Código:
def sumar(*args):
    resultado = 0
    for resultado_ in args:
        resultado += int(resultado_)
    print(resultado)
    return
a = input("Ingresa los numeros a sumar (Separados con un espacio) : ")
sumar( *a.split() )

  Este código me pareció más fácil de entender para mi (Ya que no llevo mucho en python). En cuanto a lo de *args, la idea es meter varios números y que se sumen/resten/multipliquen/dividan/etc entre sí.

  El Guión bajo siempre lo uso de esa manera (Para crear variables temporales), Ya que me parece más cómodo que crear variables con otro nombre o ponerle un número (Usaría contador_ , en lugar de contador2. Me parece más cómodo.). Aunque en python se crean variables temporales (Como en las fuciones o en el for) yo sigo usando los "_" porque así programo yo xd

 
Citar
Para que sirve el *args y args osea,tengo entendido que cuándo se pone *args es para pasar una cantidad buena de parámetros,pero y el otro?? El args cambia en algo?

  No se si a ti te pasa lo mismo, Pero:

Si funciona:
Código:
def sumar(*args):
    resultado = 0
    for resultado_ in args:

Error de Sintaxis:
Código:
def sumar(*args):
    resultado = 0
    for resultado_ in *args:

Error de Sintaxis2:
Código:
def sumar(args):
    resultado = 0
    for resultado_ in args:

  Yo por lo que he visto, El * en ARGS Solo se usa en "def sumar(*args)" para decirle a python que vamos a usar el ARGS y no una variable temporal llamada ARGS (es decir, Usar el *ARGS y no un solo argumento llamado ARGS).

  Ya luego de el "def sumar(*args)" no es necesario usar el "*".

 (Supongo yo eh  :xD, Recuerda que soy un newbie en python, a pesar del tiempo que llevo aprendiendo a usarlo)


Título: Re: [Python] Pasar de str a int?
Publicado por: KonohaHokage en 20 Enero 2021, 08:22 am
a="enter a number of your choice."
b="enter another number of your choice."
c,d=int(a,b)
print("numbers are:-")
print c,d

refer to any queries on python tutorial (https://intellipaat.com/blog/tutorial/python-tutorial/)