elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Pasar de str a int?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Pasar de str a int?  (Leído 5,909 veces)
M401

Desconectado Desconectado

Mensajes: 119


:$


Ver Perfil
[Python] Pasar de str a int?
« 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:


En línea

Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle
EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.164



Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #1 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


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #2 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.
« Última modificación: 18 Enero 2021, 02:29 am por tincopasan » En línea

Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #3 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.
En línea

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #4 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 
En línea

Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #5 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
« Última modificación: 18 Enero 2021, 04:43 am por Panic0 » En línea

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #6 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.  
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.841


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #7 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

« Última modificación: 18 Enero 2021, 08:13 am por [D]aniel » En línea

M401

Desconectado Desconectado

Mensajes: 119


:$


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #8 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)
« Última modificación: 18 Enero 2021, 19:01 pm por Mudereded401 » En línea

Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle
KonohaHokage

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Python] Pasar de str a int?
« Respuesta #9 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Pasar de decimal a Octal.
Scripting
Meta 9 13,935 Último mensaje 3 Noviembre 2010, 11:54 am
por Meta
[Python] Pasar de negativo a positivo
Scripting
Meta 4 15,085 Último mensaje 1 Diciembre 2010, 23:58 pm
por ChicoMaravilla
Pasar Un codigo de C++ a Python
Programación General
P1R0 1 13,813 Último mensaje 13 Diciembre 2012, 03:12 am
por P1R0
[duda] Python al pasar a c++
Scripting
colcrt 1 2,049 Último mensaje 23 Septiembre 2015, 23:36 pm
por engel lex
AYUDA!!! PASAR UN CODIGO C A PYTHON
Scripting
kujaku 4 3,627 Último mensaje 11 Julio 2019, 22:26 pm
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines