python诡异的for循环

心血来潮想写一个福利彩票的随机摇号程序,由于之前一直是写Java的程序或是C# 的程序,于是就这么写下去了:

for j in range(0, 7):
        ball = random.randrange(1, 13)
        # 本意是在这里进行去重
        if ball not in lastBalls:
            lastBalls.append(ball) 
        else:
            j = j - 1

结果发现没有达到去重的效果,这是为什么呢?这是因为 range(start,end,step) 这个函数的start,end  一旦固定下来,是不可以更改的,

所以这里的 j = j - 1 并没有达到预期的减一效果,而是忠实的走过了 1,2,3,4,5,6  j 的减一并没有影响到range的计数方式


不甘心啊,于是,我换了一种方式:

i = 7
for j in range(0, i):
        ball = random.randrange(1, 13)
        if ball not in lastBalls:
            lastBalls.append(ball) 
        else:
            i = i + 1

这样是否会影响到呢,结果表明,没有影响,叹气


没有办法,最后只能用while做了:

i = 0
while i < 7 :
        ball = random.randrange(1, 13)
        if ball not in lastBalls:
            lastBalls.append(ball) 
            i = i + 1
        else:
            pass

真是个坑,记下来,免得再犯


你可能感兴趣的:(python,for,range)