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

10
 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中使用,但是发现很难找到一种方法来将用户输入的字符串转换为整数。经过所有的谷歌搜索和尝试后,我决定寻求帮助。你能帮忙吗?


他在问题标题中明确提到了Python 3。 - murgatroid99
为什么我应该使用字符串格式化而不是逗号? - Rabcor
使用格式字符串而不是逗号的主要原因是WYSIWYG(从'2 + {} = {}',您可以立即知道输出的样子)以及更多的控制,即使对于简单的情况,您也必须处理来自逗号的额外空格。较不重要的原因(至少对您而言)是格式化与动态值一起使用更容易,更易于国际化,并且在Python 2.x和3.x之间更具可移植性。(如果您编写print(1,2),则在3.x中会得到1 2,但在2.x中会得到(1,2)。) - abarnert
5个回答

12

您需要将整数转换为字符串:

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

或将它作为参数传递给print,然后print将为您执行此操作:

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

我会使用字符串格式化来完成它:

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

谢谢!这也回答了我的所有问题 :) - Rabcor

6
你的问题不在于将输入转换为整数。问题在于当你写' = ' + rslt时,你试图将一个整数加到一个字符串上,这是不允许的。
你有几个选择。你可以将integerrslt再次转换为字符串,以便将它们添加到其余的字符串中:
print('2 + ' + str(integer) + ' = ' + str(rslt))

或者您可以打印多个东西:

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

或者使用字符串格式化:

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

谢谢!这完美地回答了我的所有问题。 - Rabcor

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

这样做可以更灵活,如果你需要复杂的数字、列表或元组作为输入,可以实现。

@user2115045 你确定吗?(编辑:是的 - 我没有粘贴最后一个 )...¬) - Jon Clements

0

如果您想将一个值转换为整数,请使用内置函数int,如果您想将一个值转换为浮点数,请使用内置函数float。然后,您可以使用内置函数str将这些值转换回字符串。内置函数input返回字符串,因此您可以在代码中像这样使用这些函数:

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)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接