在Python 3中将字符串转换为int或float?

Rab*_*cor 10 python string double integer python-3.x

 integer = input("Number: ")
 rslt = int(integer)+2
 print('2 + ' + integer + ' = ' + rslt)
 double = input("Point Number: ")
 print('2.5 + ' +double+' = ' +(float(double)+2.5))
Run Code Online (Sandbox Code Playgroud)

给我

Traceback (most recent call last):
  File "C:\...", line 13, in <module>
    print('2 + ' + integer + ' = ' + rslt)
TypeError: Can't convert 'int' object to str implicitly
Run Code Online (Sandbox Code Playgroud)

我对编程很新,我的背景主要是C#的基础知识到目前为止.我想通过在Python上完成我所有的C#学校项目来学习Python.我习惯了C#的简单语法,它看起来像这样:

int integer = Convert.ToInt32(Console.ReadLine())
Run Code Online (Sandbox Code Playgroud)

要么

double double = Convert.ToDouble(Console.ReadLine())
Run Code Online (Sandbox Code Playgroud)

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

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

我试图发现自己的格式与我在C#中习惯使用的格式类似,但是在找到一个方法将用户输入字符串转换为整数后,所有这些谷歌搜索并尝试一切我能想到(我在谷歌上发现)我觉得是时候问了.你能帮我吗?

Ble*_*der 12

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

print('2 + ' + str(integer) + ' = ' + str(rslt))
Run Code Online (Sandbox Code Playgroud)

或者将它作为参数传递给printprint,print会为你做:

print('2 +', integer, '=', rslt)
Run Code Online (Sandbox Code Playgroud)

我会使用字符串格式化:

print('2 + {} = {}'.format(integer, rslt))
Run Code Online (Sandbox Code Playgroud)


Bre*_*arn 6

您的问题不是将输入转换为整数.问题在于,当您编写时,' = ' + rslt您尝试向字符串添加整数,而您无法执行此操作.

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

print('2 + ' + str(integer) + ' = ' + str(rslt))
Run Code Online (Sandbox Code Playgroud)

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

print('2 + ', integer, ' = ', rslt)
Run Code Online (Sandbox Code Playgroud)

或使用字符串格式:

print('2 + {0} = {1}'.format(integer, rslt))
Run Code Online (Sandbox Code Playgroud)


Jon*_*nts 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...")
Run Code Online (Sandbox Code Playgroud)

另一种选择 - 看起来有点复杂是允许解释器对值进行最佳猜测,然后提出不是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')
Run Code Online (Sandbox Code Playgroud)

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