Python 3 - 使用两个不同的值进行计数

Bru*_*e L 7 python iteration loops

我试图弄清楚如何计算在两个不同数字(如2和3)之间交替的某个整数(作为范围).因此输出将是2 5 7 10 12 15等.

我开始尝试改变一个简单的while循环,如下所示,取两个值:

a = 0 
while a < 100: 
    a = a + 2 + 3
    print(a, end=' ')
Run Code Online (Sandbox Code Playgroud)

但它最终只能计算到100乘5.

我已经尝试了数字范围和循环和模块,如itertools尝试找出一种方法来做到这一点,我完全被难倒了.

我在搜索之后执行了搜索,所有我能找到的是通过一个带有循环和范围的数字来计算.

Cor*_*mer 11

你可以用itertools.cycle

import itertools
a = 0
it = itertools.cycle((2,3))
while a < 100:
    a += next(it)
    print(a)
Run Code Online (Sandbox Code Playgroud)

产量

2
5
7
10
...
95
97
100
Run Code Online (Sandbox Code Playgroud)

itertools.cycle只要你调用它,发生器就会不断地循环回元组.


Wil*_*sem 6

您需要a在添加两个之后打印内容,并在添加三个之后:

a = 0
while a < 100: 
    a = a + 2
    print(a, end=' ')
    if a < 100:
        a = a + 3
        print(a, end=' ')
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你可以更好地构建一个生成器,迭代地添加两个和三个交错:

def add_two_three(a):
    while True:
        a += 2
        yield a
        a += 3
        yield a
Run Code Online (Sandbox Code Playgroud)

然后,您可以打印生成器的内容,直到它达到100或更多:

from itertools import takewhile

print(' '.join(takewhile(lambda x: x < 100,add_two_three(0))))
Run Code Online (Sandbox Code Playgroud)

  • 使用发电机是明智之举,但对于OP来说可能有点过于先进. (2认同)