2017-05-16 18 views
-1

xの値を増加させる変数zは、変数yxの間に認識されません。 変数 'z'を3に設定すると、ループの実行ごとにxの値が3ずつ増加すると予想されましたが、毎回1ずつ増加します。forループ内の変数はループによって認識されません

def lists(x, y, z): 
    numbers = [] 
    for x in range(x, y): 
     print "At the top x is %d" % x 
     numbers.append(x) 

     x += z 
     print "Numbers now: ", numbers 
     print "At the bottom x is %d" % x 

    print "The numbers: " 

    for num in numbers: 
     print num 

lists(int(raw_input("Starting Value: ")), int(raw_input("Ending Value: ")), 
int(raw_input("Increment Amount: "))) 
+2

は' '次の値の各反復にX 'を設定します。ループの本体で 'x'に何をするかは関係ありません。' for'ステートメントは、以前に指し示していた 'x'を置き換えるたびにその割り当てを毎回行います。 –

+0

入力した値、取得した出力、予想した出力を指定していません。これを適切にしてください[MCVE]。 –

+0

そして、ステップサイズの数値を生成したいのであれば、単に 'numbers = range(x、y、z)'を使うのではないでしょうか? –

答えて

0

forループfor-each constructあります。 range()によって生成されたシーケンスを受け取り、順番にそのシーケンスの各値にxを設定します。 forあなたはその後xで何をするか気にしないので、あなたがループ本体にxで何が何であれ

は、ここでの違いはありません。

あなたが直接range()に渡し、ステップサイズとしてzを使用する場合:

for value in range(x, y, z): 
    numbers.append(value) 

または単にPythonの2にrange()は、リストオブジェクトが作成されるため、完全にforループをドロップする:

numbers = range(x, y, z) 

Cのようなループをシミュレートしたい場合は(ループ本体のループ変数を変更します)、私たちE whileループ代わり:で... `xの

while x < y: 
    x += z 
    print x 
+0

ありがとうございました。 –

関連する問題