for i in range (0, 81):
output = send command
while True:
last_byte = last_byte - offset
if last_byte > offset:
output = send command
i+
else:
output = send command
i+
break
Sendコマンドが実行されるたびに反復子を増やしたい。現在、forループが実行されたときに1だけ増加します。お知らせ下さい
for i in range(0,10):
print(i)
i +=2
print("increased i", i)
このコードを実行すると、0〜9で生成されました。反復子が2増えると予想していました。
イテレータのコピーを名前付きオブジェクトとして保存します。その後、必要に応じてスキップできます。
>>> myiter = iter(range(0, 10))
>>> for i in myiter:
print(i)
next(myiter, None)
...
0
2
4
6
8
for
ループ内ではできません。ループが再開されるたびに、変数i
が再割り当てされるため(ループ内で変数を変更した後でも)、再割り当てされた変数を増やすだけです。そのようなことをしたい場合は、while
ループを使用して、スローアウェイ変数を手動で増やした方が良いでしょう。
_>>> i=0
>>> while i< 10 :
... print(i)
... i +=2
... print("increased i", i)
...
0
('increased i', 2)
2
('increased i', 4)
4
('increased i', 6)
6
('increased i', 8)
8
('increased i', 10)
_
それに加えて、特定の条件に基づいてではなく期間で変数を増やしたい場合は、適切なスライサーを使用して、ループしている反復可能オブジェクトをスライスできます。
たとえば、イテレータがある場合は、itertools.islice()
を使用できます。リストがある場合は、インデックス付け中にステップを使用できます(_my_list[start:end:step]
_)。
range()
には、ステップを指定するオプションの3番目のパラメーターがあります。それを使用して、カウンターを2ずつ増やします。例えば:
for i in range(0, 10, 2):
print(i)
print("increased i", i)
通常の変数のようにi
をインクリメントできない理由は、forループが実行を開始すると、リスト(またはPython 3+)の範囲オブジェクト)が作成されるためです。 、およびi
は、単にそのオブジェクトの各値を増分的に表します。
@ilaunchpad申し訳ありませんが、これを投稿するには遅すぎますが、ここにあなたが探していたものがあります
i=0
for J in range(0,10):
print(i)
i = i + 2
print("increased i", i)
Forステートメント全体で同じ変数を使用しないでください。
Output
vaibhav@vaibhav-Lenovo-G570:~$ python3 /home/vaibhav/Desktop/Python/pattern_test.py
0
2
4
6
8
10
12
14
16
18
increased i 20