¿Convertir cadenas a int o flotar en Python 3?

integer = input("Number: ") rslt = int(integer)+2 print('2 + ' + integer + ' = ' + rslt) double = input("Point Number: ") print('2.5 + ' +double+' = ' +(float(double)+2.5)) 

Me da

 Traceback (most recent call last): File "C:\...", line 13, in  print('2 + ' + integer + ' = ' + rslt) TypeError: Can't convert 'int' object to str implicitly 

Soy bastante nuevo en la progtwigción y mi fondo es principalmente lo básico de C # hasta ahora. Quería intentar aprender Python haciendo todos mis proyectos de escuela C # en Python. Estoy acostumbrado a la syntax simple de C # que se vería así:

 int integer = Convert.ToInt32(Console.ReadLine()) 

o

 double double = Convert.ToDouble(Console.ReadLine()) 

Que toma una cadena de entrada de usuario y la convierte a lo que especifiqué.

Creo que leí que py2.x tiene un comando llamado raw_input que funciona un poco mejor que el comando de entrada de py3.x a este respecto.

Estaba tratando de encontrarme con un formato similar al que solía usar en C # para usar en Python, pero resulta sorprendentemente difícil encontrar un método para convertir la cadena de entrada del usuario en un número entero después de todo esto, buscar en Google y probar todo Podía pensar (y que encontré en google) decidí que era hora de preguntar. ¿Puede usted ayudar?

Tienes que convertir el entero en una cadena:

 print('2 + ' + str(integer) + ' = ' + str(rslt)) 

O pásalo como un argumento para print e imprimir lo hará por ti:

 print('2 +', integer, '=', rslt) 

Lo haría utilizando el formato de cadena:

 print('2 + {} = {}'.format(integer, rslt)) 

Tu problema no es convertir la entrada en un entero. El problema es que cuando escribe ' = ' + rslt está intentando agregar un número entero a una cadena, y no puede hacer eso.

Tienes pocas opciones. Puede convertir integer y rslt nuevamente en cadenas para agregarlos al rest de su cadena:

 print('2 + ' + str(integer) + ' = ' + str(rslt)) 

O simplemente puedes imprimir varias cosas:

 print('2 + ', integer, ' = ', rslt) 

O use el formato de cadena:

 print('2 + {0} = {1}'.format(integer, rslt)) 

En Python 3.x – la input es el equivalente de raw_input de Python 2.x …

Debería usar el formato de cadena para esto, y realizar una comprobación de errores:

 try: integer = int(input('something: ')) print('2 + {} = {}'.format(integer, integer + 2)) except ValueError as e: print("ooops - you didn't enter something I could make an int of...") 

Otra opción, que se ve un poco complicada, es permitir que el intérprete haga su mejor cálculo del valor y luego suba algo que no sea int o float :

 from ast import literal_eval try: value = literal_eval(input('test: ')) if not isinstance(value, (int, float)): raise ValueError print value + 2 except ValueError as e: print('oooops - not int or float') 

Esto permite un poco más de flexibilidad si quisiera números complejos o listas o tuplas como entrada, por ejemplo …

Si desea convertir un valor en un entero, use la función incorporada int , y para convertir un valor en un número de punto flotante, use la función incorporada float . Luego, puede usar la función incorporada de str para convertir esos valores de nuevo en cadenas. La input función incorporada devuelve cadenas, por lo que usaría estas funciones en un código como este:

 integer = input("Number: ") rslt = int(integer)+2 print('2 + ' + integer + ' = ' + str(rslt)) double = input("Point Number: ") print('2.5 + ' +str(double)+' = ' +str(float(double)+2.5) 
 integer = int(input("Number: ")) print('2 + %d = %d' % (integer, integer + 2)) double = float(input("Point Number: ")) print('2.5 + %.2f = %.2f' % (double, double + 2.5))