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
Ich möchte den Iterator jedes Mal erhöhen, wenn der Sendebefehl ausgeführt wird. Momentan erhöht es sich nur um eins, wenn die for-Schleife ausgeführt wird. Bitte beraten
for i in range(0,10):
print(i)
i +=2
print("increased i", i)
Ich lief diesen Code aus, und er lief von 0 bis 9 aus. Ich hatte erwartet, dass sich der Iterator um 2 erhöhen würde.
Speichern Sie eine Kopie des Iterators als benanntes Objekt. Dann können Sie vorausgehen, wenn Sie möchten.
>>> myiter = iter(range(0, 10))
>>> for i in myiter:
print(i)
next(myiter, None)
...
0
2
4
6
8
In einer for
-Schleife ist das nicht möglich. Denn bei jedem Neustart der Schleife wird die Variable i
neu zugewiesen (auch nachdem Sie sie innerhalb der Schleife geändert haben) und jedes Mal, wenn Sie die neu zugewiesene Variable erhöhen. Wenn Sie dies tun möchten, verwenden Sie besser eine while
-Schleife und erhöhen Sie die Einwegvariable manuell.
>>> 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)
Wenn Sie die Variable nicht auf einer bestimmten Bedingung, sondern auf einer bestimmten Periode erhöhen möchten, können Sie außerdem die richtigen Slicer verwenden, um die Iteration zu schneiden, in der Sie eine Schleife bilden.
Wenn Sie beispielsweise einen Iterator haben, können Sie itertools.islice()
verwenden. Wenn Sie über eine Liste verfügen, können Sie beim Indizieren (my_list[start:end:step]
) einfach Schritte verwenden.
range()
hat einen optionalen dritten Parameter zur Angabe des Schritts. Verwenden Sie dies, um den Zähler um zwei zu erhöhen. Zum Beispiel:
for i in range(0, 10, 2):
print(i)
print("increased i", i)
Der Grund, dass Sie i
nicht wie eine normale Variable inkrementieren können, liegt darin, dass beim Starten der for-Schleife eine Liste (oder ein Bereichsobjekt in Python 3+) erstellt wird und i
lediglich jeden Wert in diesem Objekt inkrementell darstellt.
@ilaunchpad Sorry, ich weiß, es ist zu spät, um dies zu posten, aber hier ist was Sie gesucht haben
i=0
for J in range(0,10):
print(i)
i = i + 2
print("increased i", i)
Sie sollten nicht dieselbe Variable in der For-Anweisung verwenden.
Output
[email protected]:~$ python3 /home/vaibhav/Desktop/Python/pattern_test.py
0
2
4
6
8
10
12
14
16
18
increased i 20