在 Python 3 中将字符串转换为 int 或 float?
Posted
技术标签:
【中文标题】在 Python 3 中将字符串转换为 int 或 float?【英文标题】:Convert strings to int or float in Python 3? 【发布时间】:2013-03-04 21:47:07 【问题描述】: 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 中使用的格式相似的格式,但事实证明,在所有这些谷歌搜索之后,仅仅找到一种将用户输入字符串转换为整数的方法就非常困难并尝试了所有我能想到的(以及我在谷歌上找到的)我决定是时候问了。你能帮忙吗?
【问题讨论】:
他在问题标题中说 python 3 为什么我应该使用字符串格式而不是逗号? 在逗号上使用格式字符串的主要原因是所见即所得(您可以从'2 + = '
立即知道您的输出将是什么样子)并且即使对于简单的情况也可以进行更多控制,您必须处理您从逗号获得的额外空格)。不太重要的原因(至少对您而言)是格式化更容易与动态值一起使用,更容易国际化,并且在 Python 2.x 和 3.x 之间更容易移植。 (如果你写print(1,2)
,你在3.x中得到1 2
,但在2.x中得到(1, 2)
。)
【参考方案1】:
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))
【讨论】:
【参考方案2】:在 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 你确定吗? (编辑:是的 - 我没有在其中粘贴最后一个)
...¬)【参考方案3】:
如果要将值转换为整数,请使用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)
【讨论】:
【参考方案4】:您的问题不在于将输入转换为整数。问题是当你写' = ' + rslt
时,你试图将一个整数添加到一个字符串中,而你不能这样做。
您有几个选择。您可以将integer
和rslt
转换回字符串以将它们添加到字符串的其余部分:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者您可以只打印多个内容:
print('2 + ', integer, ' = ', rslt)
或者使用字符串格式:
print('2 + 0 = 1'.format(integer, rslt))
【讨论】:
谢谢!为我解答了一切。【参考方案5】:您必须将整数转换为字符串:
print('2 + ' + str(integer) + ' = ' + str(rslt))
或者将其作为参数传递给print
,print 会为您完成:
print('2 +', integer, '=', rslt)
我会使用字符串格式:
print('2 + = '.format(integer, rslt))
【讨论】:
谢谢!这也为我回答了一切:)以上是关于在 Python 3 中将字符串转换为 int 或 float?的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将unsigned char类型的int字符串转换为int