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# 的基础知识。我想尝试通过在 Python 上完成所有 C# 学校项目来学习 Python。我习惯了 C# 的简单语法,看起来像这样:

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

或者

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

它接受用户输入字符串并将其转换为我指定的内容。

我想我读过 py2.x 有一个名为 raw_input 的命令,在这方面它比 py3.x 的输入命令好一点。

我试图找到一种与我在 C# 中习惯在 Python 中使用的格式相似的格式,但事实证明,在所有这些谷歌搜索和尝试一切之后,仅仅找到一种将用户输入字符串转换为整数的方法就非常困难我能想到(我在谷歌上找到的)我决定是时候问了。你能帮我吗?

4

5 回答 5

12

您必须将整数转换为字符串:

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

或将其作为参数传递给printprint 将为您完成:

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

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

print('2 + {} = {}'.format(integer, rslt))
于 2013-03-16T02:38:34.553 回答
6

您的问题不在于将输入转换为整数。问题是,当您编写时,' = ' + rslt您试图将整数添加到字符串中,而您不能这样做。

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

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

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

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

或使用字符串格式:

print('2 + {0} = {1}'.format(integer, rslt))
于 2013-03-16T02:38:36.287 回答
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')

例如,如果您想要复数或列表或元组作为输入,这将提供更多的灵活性......

于 2013-03-16T02:41:02.800 回答
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))
于 2013-03-16T03:00:47.370 回答
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)
于 2013-03-16T02:43:30.180 回答