将字符串转换为整数或浮点数在Python 3?(Convert strings to int or

2019-07-21 18:32发布

 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#的只是基本至今。 我想尝试通过做在Python中的所有我的C#项目学校学习Python。 我已经习惯了C#的语法很简单这将是这个样子:

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

要么

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

这需要用户输入字符串,并将其转换为我指定的。

我觉得我读py2.x有一个命令个叫做raw_input的作品略高于py3.x在这方面,输入命令更好。

我试图找到自己一个相似的格式,因为我已经习惯了在C#在Python使用一个,但它证明了令人惊讶的,好不容易才找到用户输入的字符串转换为整数这一切的google搜索和尝试一切后的方法我能想到的(以及我在谷歌找到)我觉得是时候要问。 你能帮我吗?

Answer 1:

你必须整数转换为字符串:

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

或者,它作为参数传递到print和打印会为你做它:

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

我会使用字符串格式化做到这一点:

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


Answer 2:

你的问题是不是与输入转换为整数。 问题是,当你写' = ' + rslt你想一个整数添加到字符串,你不能这样做。

您有几种选择。 您可以将integerrslt回字符串将它们添加到您的字符串的其余部分:

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

或者你可以只打印多件事情:

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

或者使用字符串格式化:

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


Answer 3:

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

这让更多的灵活性,如果你想复杂的数字或列表或元组作为例如输入...



Answer 4:

如果您想要的值转换为整数,使用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)


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


文章来源: Convert strings to int or float in Python 3?