如何在Python 3中将字符串转换为整数或浮点数?

10 投票
5 回答
35809 浏览
提问于 2025-04-17 19:17
 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...")

还有一种选择,虽然看起来有点复杂,就是让解释器自己猜测值,然后抛出一些不是intfloat的错误:

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 时,你是在尝试把一个整数和一个字符串相加,这样是行不通的。

你有几种解决办法。你可以把 integerrslt 再转换成字符串,然后再把它们加到你的其他字符串里:

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))

撰写回答