将字符串转换为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))
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搜索并尝试所有我能想到的(并且我在谷歌上找到的)我决定是时候提问。你能帮我吗?
你必须整数转换成字符串:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者它作为参数传递给print
和打印会为你做它:
print('2 +', integer, '=', rslt)
我会用字符串做格式化:
print('2 + {} = {}'.format(integer, rslt))
谢谢!这回答了我的一切:) – Rabcor 2013-03-16 02:44:27
您的问题是与输入转换为整数。问题是,当你编写' = ' + rslt
时,你试图向字符串中添加一个整数,而你不能这么做。
您有几个选项。你可以转换integer
和rslt
回字符串将它们添加到您的字符串的其余部分:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者你可以只打印多东西:
print('2 + ', integer, ' = ', rslt)
或者使用字符串格式化:
print('2 + {0} = {1}'.format(integer, rslt))
谢谢!为我回答了一切。 – 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...")
另一种选择 - 这看起来有点令人费解的是让翻译把其最好的猜测值,然后提高东西是不是int
或float
:
这样,如果你想复杂的数字或列表或元组作为例如输入更多的灵活性...
语法错误除外? – Rabcor 2013-03-16 02:45:57
@ user2115045你确定吗? (编辑:是的 - 我没有把最后一个'''粘贴在那里......¬) – 2013-03-16 02:49:00
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))
他说,蟒蛇3就在问题的标题 – murgatroid99 2013-03-16 02:44:09
为什么我宁愿使用字符串不仅仅是一个逗号格式化? – Rabcor 2013-03-16 03:13:59
使用格式字符串而不是逗号的主要原因是所见即所得(即使对于简单情况,您也可以立即知道您的输出看起来像从“2 + {} = {}”')中看起来是什么样,并且更具控制性,您必须处理与您从逗号获得的额外空间)。较不重要的原因(至少对你而言)是格式更容易与动态值一起使用,更容易国际化,并且在Python 2.x和3.x之间更具可移植性。 (如果你写'print(1,2)',你会在3.x中得到'1 2',但在2.x中得到'(1,2)') – abarnert 2013-03-16 04:46:50