如何更改for循环中的列表? Python中的Labouchere

时间:2014-07-21 15:38:06

标签: python

我正在阅读关于基本概率论的文本http://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/amsbook.mac.pdf,作为复习,并将其作为一个教自己一些编程的机会。

我正在尝试为轮盘赌中的Labouchere投注系统编写模拟(链接pdf中的第9页第13页)。

我认为我接近正确的答案,但我无法弄清楚如何让每个连续回合的“赌注”更改。

这是我到目前为止所做的:

    def Labouchere(T):
        bet, mon = [4,3,2,1], 0
        for t in range(0,T):
            ball = random.uniform(0.0,1.0)
            if ball < (18/float(38)):
                mon += (bet[0] + bet[-1])
                np.delete(bet, 0, 0)
                np.delete(bet, -1, 0)
            elif ball >= (18/float(38)):
                mon -= (bet[0] + bet[-1])
                np.insert(bet, 0, (bet[0]+bet[-1]))
            else:
                break
        return mon

非常感谢任何帮助。我也试图从Steven F. Lott的书“面向对象设计中的建立技巧”中学习,但它似乎高于我迄今为止的理解水平。对于准备使用该指南的材料的建议也是非常宝贵的。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在胜诉案件中,要么:

bet = bet[1:-1] # "slice" from second to penultimate

或:

bet.pop(0) # remove first
bet.pop(-1) # remove last

在你失败的情况下:

bet.append(mon) # add to end

答案 1 :(得分:0)

您可以使用切片和追加来实现此目的。看到 Explain Python's slice notation了解更多详情。

如果用户获胜:

list = list[1:len(list)-1]

如果用户输了:

list.append(list[0] + list[len(list)-1])