2017-08-07 21 views
0

の乗数によって補強する必要がありますForLoop - イテレータが私は(Cで書かれた)このようなものがどのように把握しようとしている100

for (long long i = 100; i <= pow(10,length); i = i * 100){} 

は、Python 3 ように翻訳されるだろうイテレータが100倍になる最後の部分は、私が立ち往生したところです。

ご協力いただければ幸いです。

+0

あなたの現在の試行は何ですか? –

+2

まあ、 'for'ループは本質的に' while'ループです... – ForceBru

答えて

8

代わりwhileループを使用:

i = 100 
while i <= 10 ** length: 
    # .... 
    i *= 100 

または生成関数を使用:

def powerranger(start, end, mult): 
    val = start 
    while val <= end: 
     yield val 
     val *= mult 

for i in powerranger(100, 10 ** length, 100): 
    # ... 
+0

その名前のためだけです:) –

+0

ジェネレータFTW! – Sagar

+0

@MadPhysicist:https://i.stack.imgur.com/BgCFB.jpg –

1

ではなくループに使用し、このC型ループwhileループを使用してより翻訳されます:

i = 100 
while i <= pow(10, length): 
    # Use the value of `i` here. 
    i *= 100 
-1
j = 100 
for i in range(length): 
    j *= 100 
    print j # or other use of j 

すぎない神託が、それは動作します。物事の

+0

私は '10 ** 2'で乗算され、条件は元の質問では' <= 'です。 'range(length // 2 + 1)'のように –

0

輸入ロット:

from itertools import takewhile, count 

for i in (100 ** x for x in takewhile(lambda y: y <= length // 2, count(1))): 
    # do something useful here 
関連する問題