不能将序列乘以“浮点”类型的非整数

Posted

技术标签:

【中文标题】不能将序列乘以“浮点”类型的非整数【英文标题】:can't multiply sequence by non-int of type 'float' 【发布时间】:2013-07-07 21:35:45 【问题描述】:

我想将两个变量相乘。它们是原始输入,但它总是给我这个错误。

no1 = raw_input('Your first number')
no2 = raw_input('Your second number')

answer = no1 * no2

【问题讨论】:

【参考方案1】:

raw_input返回一个字符串,先转换成整数或浮点数进行数值运算。

no1 = float(raw_input('Your first number'))
no2 = float(raw_input('Your second number'))

在 py2.x 上,您还可以使用 input 如果它会自动将输入字符串转换为 数字。但是不知道输入源就不安全了。

关于raw_input的帮助:

>>> print raw_input.__doc__
raw_input([prompt]) -> string

Read a string from standard input.  The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled.  The prompt string, if given,
is printed without a trailing newline before reading.

关于input的帮助:

>>> print input.__doc__
input([prompt]) -> value

Equivalent to eval(raw_input(prompt)).

【讨论】:

【参考方案2】:

您正在尝试将 2 个字符串相乘,因此您需要通过在 raw_input 结果上调用 float 函数将它们手动转换为浮点数。

在 python 2 中,您还可以使用 input 函数而不是 raw_input - 它会自动执行此操作。

警告 - 此函数完全不安全 - 它将输入字符串作为 python 代码执行(与 eval 函数相同)。除非您信任用户,否则不要使用它

【讨论】:

以上是关于不能将序列乘以“浮点”类型的非整数的主要内容,如果未能解决你的问题,请参考以下文章

如何解决错误“不能将序列乘以'float'类型的非整数”?

将浮点数乘以 Python 中的函数并且无法将序列乘以“浮点”类型的非整数

TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后

TypeError:不能将序列乘以“float”类型的非整数(python 2.7)

不能在乘法数组和 e-6 中将序列乘以“float”类型的非整数 [重复]

java.运算符