使我的功能更简洁

时间:2016-11-01 20:31:40

标签: python

我一直在尝试不同的方法来使这个功能更简洁,或者我的朋友称之为'光滑',这里有什么帮助吗?

def craps():
    from random import randint
    dice = 0
    loop = 0
    while loop < 1:
        d1 = randint(1,6)
        d2 = randint(1,6)
        roll = d1 + d2
        dice += 1
        print(d1, d2)
        while dice == 1:
            first=roll
            if roll in {2,3,12}:
                loop += 1
                return 0
            elif roll in {7,11}:
                loop += 1
                return 1
            else:
                break
        while dice != 1:
            if first==roll:
                loop += 1
                return 1
            elif roll==7:
                loop += 1
                return 0
            else:
                break 

1 个答案:

答案 0 :(得分:0)

规则IIUC是:在第一轮第2,3,6场失利,7或11胜。否则,如果你在7到达之前重复相同的总数你就赢了,如果7先到而你输了。

在代码中我写道:

def roll():
    d1 = randint(1, 6)
    d2 = randint(1, 6)
    print((d1, d2))
    return d1 + d2

def game():
    first = roll()
    if first in (2, 3, 12):
        return 0
    if first in (7, 11):
        return 1
    while True:
        other = roll()
        if other == first:
            return 1
        elif other == 7:
            return 0

请注意,巧合不是一个好目标,目标是可读性。通常使代码更短可以提高可读性,但并不总是如此(参见代码高尔夫比赛......对于代码来说无疑是有趣的,但不是你想在生产中处理的东西)。