我在python中制作一个简单的扑克游戏。在进行下注轮次时,我得到最大递归深度误差,而且我不太确定如何修复它。我之前使用过该版本的代码时遇到过这个问题,但我现在将下注轮分为两半(一个用于人类,另一个用于Ai)。我已经尝试了所有我能想到的修复和堆栈溢出,但仍然没用。
以下是代码:
@Html.TextBoxFor(m=>m.CARET
此处的完整代码:http://pastebin.com/sdfwWjsg
这是最后一个工作版本:http:// pastebin.com/35gapWNi
以下是错误代码:
@Html.TextBoxFor(m=>m.Invoice_Details.CARET
此处的完整错误代码:http://pastebin.com/52CH0AvL
我认为它与代码有关,而不是在它应该做的时候突破循环,但我找不到它不在的任何地方。
答案 0 :(得分:0)
从http://pastebin.com/sdfwWjsg查看代码的第156-162行和第178-180行:
156 def playGame():
157 startPlayer = bettingRoundOrder()
158 human.money = human.money - Table.entrymoney
159 ai.money = ai.money - Table.entrymoney
160 Table.pot = (Table.pot + 2*Table.entrymoney)
161
162 if bettingRound() == False:
178 def bettingRound():
179 won = False
180 if playGame().startPlayer == 1:
这些片段包含错误消息中重复提及的行180和162。现在让我们看看当第156行的playGame()
函数被调用时会发生什么:第157-160行设置了一些变量,第162行调用bettingRound()
。现在我们在178行,第179行设置变量,第180行调用playGame()
,所以我们回到156,这是无限循环。
我没有调查你的其余代码,所以我无法修复错误。
另一句话:如果你想做playGame().startPlayer
之类的事情,那么playGame()
函数必须返回一个具有startPlayer
成员的对象。 Table.winner
(它是一个字符串或None)和cardCompare()
(它是一个字符串)的结果都不起作用。 <{1}}函数中的某个startPlayer
变量是不够的。