不能将序列乘以“浮点”类型的非整数
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
函数相同)。除非您信任用户,否则不要使用它
【讨论】:
以上是关于不能将序列乘以“浮点”类型的非整数的主要内容,如果未能解决你的问题,请参考以下文章
将浮点数乘以 Python 中的函数并且无法将序列乘以“浮点”类型的非整数
TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后
TypeError:不能将序列乘以“float”类型的非整数(python 2.7)