Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert strings to int or float in 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))

Gives me

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

I'm fairly new to programming and my background is mostly just the basics of C# so far. I wanted to try to learn Python through doing all my C# school projects on Python. I'm used to the simple syntax of C# which would look something like this:

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

or

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

Which takes a user input string and converts it to what I specified.

I think I read py2.x has a command called raw_input that works a bit better than the input command of py3.x in this regard.

I was trying to find myself a similar format as the one I'm used to in C# to use in Python, but it's proving surprisingly hard just to find a method to convert the user input string into an integer after all this googling and trying everything I could think of (and that I found on google) I decided it was time to ask. Can you help?

like image 844
Rabcor Avatar asked Mar 16 '13 02:03

Rabcor


2 Answers

You have to convert the integer into a string:

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

Or pass it as an argument to print and print will do it for you:

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

I would do it using string formatting:

print('2 + {} = {}'.format(integer, rslt))
like image 60
Blender Avatar answered Oct 08 '22 05:10

Blender


Your problem is not with converting the input to an integer. The problem is that when you write ' = ' + rslt you are trying to add an integer to a string, and you can't do that.

You have a few options. You can convert integer and rslt back into strings to add them to the rest of your string:

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

Or you could just print multiple things:

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

Or use string formatting:

print('2 + {0} = {1}'.format(integer, rslt))
like image 44
BrenBarn Avatar answered Oct 08 '22 06:10

BrenBarn