将字符串转换为int或浮点在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)) 

给我将字符串转换为int或浮点在Python 3中?

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搜索并尝试所有我能想到的(并且我在谷歌上找到的)我决定是时候提问。你能帮我吗?

+0

他说,蟒蛇3就在问题的标题 – murgatroid99 2013-03-16 02:44:09

+0

为什么我宁愿使用字符串不仅仅是一个逗号格式化? – Rabcor 2013-03-16 03:13:59

+0

使用格式字符串而不是逗号的主要原因是所见即所得(即使对于简单情况,您也可以立即知道您的输出看起来像从“2 + {} = {}”')中看起来是什么样,并且更具控制性,您必须处理与您从逗号获得的额外空间)。较不重要的原因(至少对你而言)是格式更容易与动态值一起使用,更容易国际化,并且在Python 2.x和3.x之间更具可移植性。 (如果你写'print(1,2)',你会在3.x中得到'1 2',但在2.x中得到'(1,2)') – abarnert 2013-03-16 04:46:50

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

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

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

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

我会用字符串做格式化:

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

谢谢!这回答了我的一切:) – Rabcor 2013-03-16 02:44:27

您的问题是与输入转换为整数。问题是,当你编写' = ' + rslt时,你试图向字符串中添加一个整数,而你不能这么做。

您有几个选项。你可以转换integerrslt回字符串将它们添加到您的字符串的其余部分:

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

或者你可以只打印多东西:

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

或者使用字符串格式化:

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

谢谢!为我回答了一切。 – Rabcor 2013-03-16 02:43:41

在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

​​

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

+0

语法错误除外? – Rabcor 2013-03-16 02:45:57

+0

@ user2115045你确定吗? (编辑:是的 - 我没有把最后一个'''粘贴在那里......¬) – 2013-03-16 02:49:00

如果要将值转换为整数,请使用内置函数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) 

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