Có cách nào để thực hiện một cái gì đó như thế này:Bạn có thể "khởi động lại" vòng lặp hiện tại của vòng lặp Python không?
for row in rows:
try:
something
except:
restart iteration
Có cách nào để thực hiện một cái gì đó như thế này:Bạn có thể "khởi động lại" vòng lặp hiện tại của vòng lặp Python không?
for row in rows:
try:
something
except:
restart iteration
Bạn có thể đặt try/except
khối của bạn trong vòng lặp khác và sau đó phá vỡ khi nó thành công:
for row in rows:
while True:
try:
something
break
except Exception: # Try to catch something more specific
pass
sẽ không phải là "vượt qua" gây ra vòng lặp for để tiếp tục? – user3063864
Không, bởi vì nó nằm trong vòng lặp while. Mã sẽ chỉ rơi vào cuối khối 'except' và lặp lại phía trên của vòng lặp' while'. Lưu ý rằng bạn cũng có thể sử dụng 'tiếp tục' nếu bạn muốn. – iCodez
Vì vậy, tôi sẽ đặt điều này trước khi thịt thực sự của vòng lặp của tôi, và nó chỉ đơn giản là chạy cho đến khi "cái gì đó" được xác nhận để vượt qua, và sau đó nó chạy thực tế "cái gì" trong vòng lặp của tôi? – user3063864
Mặc dù tôi sẽ không khuyên bạn rằng, cách duy nhất để làm điều này là để thực hiện một while (true) Vòng cho đến khi nó được something
Xong.
Ghi nhớ khả năng xảy ra vòng lặp vô hạn.
for row in rows:
try:
something
except:
flag = False
while not flag:
try:
something
flag = True
except:
pass
cảm ơn, điều này thực sự hữu ích – Jake
Bạn có thể làm cho hàng một iterator và chỉ trước khi không có lỗi.
it = iter(rows)
row = next(it,"")
while row:
try:
something
row = next(it,"")
except:
continue
Một lưu ý phụ, nếu bạn chưa nhận được lỗi/lỗi cụ thể, ngoại trừ bạn không muốn bắt tất cả.
Nếu bạn có Falsey giá trị mà bạn có thể sử dụng đối tượng là giá trị mặc định:
it = iter(rows)
row, at_end = next(it,""), object()
while row is not at_end:
try:
something
row = next(it, at_end)
except:
continue
Điều này dường như rõ ràng hơn tôi so với câu trả lời 'while True:' – kratenko
Có bạn cho vòng lặp bên trong một vô hạn trong khi vòng lặp. Kiểm tra điều kiện nơi bạn muốn khởi động lại vòng lặp for với điều kiện if else và phá vỡ vòng lặp bên trong. có một điều kiện if bên trong vòng lặp while nằm ngoài vòng lặp for để phá vỡ vòng lặp while. Như sau:
while True:
for row in rows:
if(condition)
.....
if(condition)
break
if(condition)
break
Bạn có thể chuyển sang bước * tiếp theo * nhưng bạn không thể * thử lại * lặp lại hiện tại. – CoryKramer
Đúng, nó được gọi là vòng lặp bên trong. – Shashank
bạn có nghĩa là như 'redo' trong perl? Tôi nghĩ rằng không có điều như vậy trong python. – kratenko