我试图在python中添加两个整数,但它似乎认为变量是一个字符串?以下是我的代码片段:
raiseAmount1 = int
raiseAmount2 = int
while end == False:
action1 = raw_input(str(Players.player1)[9:] + ", what is your move? (r/c/f):")
if action1 == 'f':
Players.player2.score = Players.player2.score + 1
game().winner = str(Players.player2)[9:]
end = True
elif action1 == 'r':
raiseAmount1 = raw_input("Raise by: ")
Players.player1.money = Players.player1.money - raiseAmount1
Table.pot = Table.pot + raiseAmount1
end = False
(此处为完整代码:http://pastebin.com/T6N8gmJk)
下面是错误:
Welcome to texas holdem!
You are on round: 0
human, what is your move? (r/c/f):r
Raise by: 80
Traceback (most recent call last):
File "poker.py", line 144, in <module>
game()
File "poker.py", line 18, in game
playGame()
File "poker.py", line 129, in playGame
bettingRound()
File "poker.py", line 96, in bettingRound
Players.player1.money = Players.player1.money - raiseAmount1
TypeError: unsupported operand type(s) for +: 'int' and 'str'
所以程序认为要么是raiseAmount1要么是玩家.player1金钱是一根弦。你知道吗
如果我使用int()
将这两个变量转换为整数,它将继续正常运行,但在添加时在下一行再次中断表格.pot筹集一笔钱。我对int()
也做了同样的事情,但这次不行了。你知道吗
我不明白python是如何认为变量是字符串的,因为它们之前都被定义为整数。你知道吗
我认为我能想到的最可能的原因是,当程序设置Player.player1 = ai (or human)
时,它不进行其整数属性?你知道吗
raw_input
返回一个字符串。你需要这样转换它:int(raw_input("Raise by: "))
另外,请注意,如果用户输入任何其他字符,这将引发错误。你知道吗
也可以使用
input
而不是raw_input
:input("Raise by: ")
如果用户输入任何其他字符,这将再次引发错误。你知道吗
这两行并不保证
raiseAmount1
和raiseAmount2
在程序中的任何地方都是整数,甚至它们下面的一行都不是。Python不是C或Java,在这里您声明一个变量是X类型的,并且它在整个程序中都保持这种类型。你知道吗raiseAmount1 = raw_input("Raise by: ")
将用户输入的字符串分配给raiseAmount1
。如果您希望它是一个整数,那么您必须对它调用int
:int(raiseAmount1)
,并准备捕获一个ValueError
异常,以防输入的字符串不代表整数。你知道吗您需要对行进行隐式转换,因为方法raw\u imput返回一个字符串,所以在代码开始时也使用变量声明,就像是c或java一样,记住python中的变量可以在执行时更改其类型,因此曾经是字符串的变量在其他时间点可以是int。你知道吗
有效的解决方案应该是:
也可以使用函数输入而不是原始输入。我建议您查看一些教程来了解python的变量是如何分配的,https://www.codecademy.com/是一个非常好的开始编程的地方。你知道吗
相关问题 更多 >
编程相关推荐