为啥我会收到不支持的操作数类型错误?

Posted

技术标签:

【中文标题】为啥我会收到不支持的操作数类型错误?【英文标题】:Why am I getting an unsupported operand type error?为什么我会收到不支持的操作数类型错误? 【发布时间】:2019-11-23 16:37:57 【问题描述】:

我是编程新手,正在学习 Python。我正在尝试构建一个简单的程序,并且在我的代码的第 9 行收到一个类型错误。

我希望“potearned”和“curpart”都是浮点数,因此它们可以分开。为什么我不能把这两个变量分开?

我尝试在代码中更改一些变量的数据类型,但无济于事。最近我尝试使用 float() 函数将操作数转换为浮点数,但这不起作用。

我写的代码是:

`begpart = input("How many participants started the game?")
curpart = input("How many participants are there left?")
bet = raw_input("How much did you bet?")
cutper = input(" What is stepbet's cut? (as decimal)")
float(cutper)
potearned = (begpart - curpart) * bet
float(curpart)
float(potearned)
earnper = potearned / curpart   <------------ error line, line 9
cut = earnper
cut = earnper * cutper
float(cut)
pot = begpart * bet
float(pot)
print cut
print earnper
netearn = earnper - cut
print netearn
netearns = str(netearn)'

print "If noone else drops out you will earn " + netearns

我的预期结果是整个程序运行时不会出现类型错误。当我执行程序时发生了什么是我收到错误:

"Traceback (most recent call last):
File "python", line 9, in <module>
TypeError: unsupported operand type(s) for /: 'unicode' and 'int' "

【问题讨论】:

【参考方案1】:

float(cutpart) 和其他此类行不会将现有的cutpart 转换为浮点数;他们返回一个新版本的cutpart,它是一个浮点数。尽管不将其保存到变量中,但您将返回的浮点数抛出。将该行(和其他此类行)更改为:

cutpart = float(cutpart)

或者,正确地说,给它一个新名称,以便您仍然可以在需要时引用以前版本的 pot

float_cutpart = float(cutpart)
float_potearned = float(potearned)
earnper = float_cutpart / float_potearned

【讨论】:

以上是关于为啥我会收到不支持的操作数类型错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误:“不支持此功能(数字商品)。”?

为啥我会收到 IllegalArgumentException:不支持的频道配置?

为啥我会收到“您的账户不支持该地区的 EC2-Classic 平台。”?

为啥我会收到“从 '[String]' 转换为不相关的类型 'String' 总是失败”错误?

为啥我会收到此错误? 'Observable<boolean>' 类型上不存在属性 'map'

为啥我会收到错误消息:Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.10 及更高版本