将字符串转换为整数或浮点数,在Python 3中?

2024-06-28 19:57:09 发布

您现在位置:Python中文网/ 问答频道 /正文

 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的input命令工作得更好。

我试图找到一个类似的格式,就像我在C#中习惯在Python中使用的格式一样,但事实证明,要找到一种方法将用户输入字符串转换成整数是非常困难的,在所有这些搜索之后,我想尽一切办法(我在google上找到的)决定是时候问了。你能帮忙吗?


Tags: 字符串用户命令numberconvertinputreadline格式
3条回答

在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的内容:

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

如果你想让复数、列表或元组作为输入,比如。。。

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

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

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

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

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

或使用字符串格式:

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

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

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

或者将其作为参数传递给print,print将为您执行此操作:

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

我会使用字符串格式:

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

相关问题 更多 >