【发布时间】:2010-03-21 01:45:57
【问题描述】:
我收到
TypeError: Can't convert 'float' object to str implicitly
使用中
Gambler.pot += round(self.bet + self.money * 0.1)
底池、下注和金钱都是双倍的(或者至少应该是双倍的)。我不确定这是否是另一个 Eclipse 的东西,但我如何让行编译?
初始化bet 和money 的代码:
class Gambler:
money = 0
bet = 0
测试用例:
number = 0
print("Here, the number is a {0}".format(type(number)))
number = input("Enter in something: ")
print("But now, it has turned into a {0}".format(type(number)))
测试用例的输出:
Here, the number is a <class 'int'>
Enter in something: 1
But now, it has turned into a <class 'str'>
显然,input() 正在将其更改为字符串。
编辑:终于解决了问题(我认为)
self.bet = int(self.bet.strip())
用户输入值后。虽然我不知道这是否是解决问题的最佳方法:)
Daniel G. 的一个更好的解决方案:
self.bet = float(input("How much would you like to bet? $"))
【问题讨论】:
-
请显示初始化self.bet和self.money的代码。
-
你还没有证明那些不是字符串。
-
这就够了,还是我应该发布更多代码?
-
这些是局部变量。你需要展示它们是如何被绑定为对象的属性的。
-
您是否已经尝试打印
type(self.bet)和type(self.money)和type(self.pot)(就在引发异常的行之前)以查看它们是否确实是数字?
标签: python string floating-point python-3.x