再见:)
所以白天,我决定做一个赌博模拟。我在测试一个失败的赌博策略(如果你尝试我的方法,我的你也可以)
让我展示我的代码,然后告诉你发生了什么。在
from random import randint
winningNumber=0
bankroll=5000
testCase=1
betLevel=0
bettingLevel=[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987]
town=[]
bet=0
#----------------------------
my_file= open("output.txt","w")
my_file.write(" # Bet Number Outcome bankroll "+"\n")
def startTheSimulation():
print "OK"
for i in range(100):
if bankroll==0:
break
global betLevel
if bankroll < bettingLevel[betLevel]:
betLevel=0
bet= bettingLevel[betLevel]
print "betlevel",betLevel
print "bet",bet
winningNumber= randint(0,36)
print "winningnumber",winningNumber
if winningNumber== 4:
win(bet)
else:
lose(bet)
def win(inbox):
global bankroll
cow= inbox*35
bankroll+=cow
print "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
print "bankroll",bankroll
town=[testCase,bet,winningNumber,"WIN",bankroll]
print town
betLevel=0
writing()
def lose(inbox):
global bankroll
global betLevel
wow= inbox
bankroll-=wow
town=[testCase,bet,winningNumber,"LOSE",bankroll]
betLevel+=1
if betLevel==16:
betLevel=15
writing()
def writing():
global testCase
testCase+=1
print "Hey!"
my_file.write(" ".join(town)+"\n")
startTheSimulation()
my_file.write("On all betting, player bet single bet on one number, which is number 4. How money money bet on number for is indicated.")
my_file.close()
我的赌博系统很奇怪。它的工作原理类似于鞅赌博系统,但我的下一个赌注不是加倍,而是基于斐波纳契序列。在
参数betLevel用于决定我应该下注多少。bettingLevel显示Fibonnaci序列的列表。在
麻烦来了
故障1: 我的输出包含空行
所需的输出文件是
^{pr2}$然而,我又得到了这个
& Bet Number Outcome bankroll
# 100 BLANK LINES
On all betting, player bet single bet on one number, which is number 4. How money money bet on number for is indicated.
我的调试过程: 我实际上把名单打印出来了。如果已填充列表(非空)。没有其他改进。在
问题2:(通过使用带参数的函数解决。) 我的银行记录没有更新。在
我的调试过程: 我解决了问题。在
注意win函数。当我打印(int(35)*int(bet))时。结果返回0,导致资金不动。 然而 当我在startTheSimulation()函数中打印“bet”时,它将打印正确的数字。我被困在这里了。在
这是我最大的两个问题。感谢任何帮助。在
PS:我使用global来避免UnBoundLocalError PPS:我使用python2.7.6
故障1: 您没有将
town
设置为全局,因此这将正确打印:,但在
writing()
中,town
是空的,这就是为什么会得到100条空行以下是示例:
^{pr2}$这是输出:
故障2: 与问题1类似,在}是局部变量,并且永远不会更改,这就是为什么
startTheSimulation():
中,您需要编写global bet
,否则{win()
方法中它是0的原因。在这些都是解决问题的方法,但是考虑创建一个类,就像@davidmh说的那样……全局变量几乎总是个坏主意
对于一个相当简单的过程来说,你的逻辑似乎相当复杂。另外,您还编写了
int(35)
之类的东西,告诉我您刚从另一种语言(也许是IDL)来到Python。在如果您将此作为一个练习来学习,我可以给您一些关于如何解决它的提示:
首先,全局变量几乎总是个坏主意。如果你需要使用一个,你可能是做错了什么。共享这些信息的正确方法是创建一个类。像这样的东西(非常不完整)
其思想是类方法可以访问类属性,因此可以完全避免全局变量,并减少出错的可能性。在
努力完成实施。一旦你有了它,你可以再次张贴,我们可以看看是否有改进。在
相关问题 更多 >
编程相关推荐