如何在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))
给我带来了
Traceback (most recent call last):
File "C:\...", line 13, in <module>
print('2 + ' + integer + ' = ' + rslt)
TypeError: Can't convert 'int' object to str implicitly
我对编程还比较陌生,目前只学过一些C#的基础知识。我想通过把我所有的C#学校项目用Python来做,来学习Python。我习惯了C#那种简单的语法,像这样:
int integer = Convert.ToInt32(Console.ReadLine())
或者
double double = Convert.ToDouble(Console.ReadLine())
这个代码会接收用户输入的字符串,并把它转换成我指定的格式。
我记得py2.x有一个叫raw_input的命令,在这方面比py3.x的input命令要好用一些。
我一直在找一个和我在C#中习惯的格式类似的用法,想在Python中使用,但经过这么多的搜索和尝试,我发现找到一个方法把用户输入的字符串转换成整数竟然这么难。想了很多办法,查了很多资料,最后我决定还是问问大家。你能帮我吗?
5 个回答
6
在Python 3.x中,input
相当于Python 2.x中的raw_input
...
你应该使用字符串格式化来处理这个问题,并且要进行一些错误检查:
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...")
还有一种选择,虽然看起来有点复杂,就是让解释器自己猜测值,然后抛出一些不是int
或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')
这样做可以让你在输入时有更多的灵活性,比如你可能想要输入复数、列表或元组等等...
6
你的问题不在于把输入转换成整数。问题在于当你写 ' = ' + rslt
时,你是在尝试把一个整数和一个字符串相加,这样是行不通的。
你有几种解决办法。你可以把 integer
和 rslt
再转换成字符串,然后再把它们加到你的其他字符串里:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者你可以直接打印多个东西:
print('2 + ', integer, ' = ', rslt)
还可以使用字符串格式化的方法:
print('2 + {0} = {1}'.format(integer, rslt))
12
你需要把整数转换成字符串:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者你可以把它作为参数传给 print
,这样打印的时候会自动帮你处理:
print('2 +', integer, '=', rslt)
我会使用字符串格式化的方法来做:
print('2 + {} = {}'.format(integer, rslt))