Bỏ qua các bước lặp trong Python


159

Tôi có một vòng lặp đang diễn ra, nhưng có khả năng các ngoại lệ sẽ được nêu ra bên trong vòng lặp. Điều này tất nhiên sẽ dừng chương trình của tôi tất cả cùng nhau. Để ngăn chặn điều đó tôi bắt các ngoại lệ và xử lý chúng. Nhưng sau đó phần còn lại của vòng lặp chạy mặc dù có một ngoại lệ xảy ra. Có một từ khóa để sử dụng trong except:mệnh đề của tôi để bỏ qua phần còn lại của lần lặp hiện tại không?


4
Đừng xem cách trả lời được chấp nhận (sử dụng continue) bắt ngoại lệ, nhưng nó đã được chấp nhận. Do đó, câu hỏi thực sự, thực sự khó hiểu.
S.Lott

@ S.Lott Tôi không cần từ khóa để bắt ngoại lệ, tôi chỉ nói về dòng chảy chung của tổng mã.
The.Anti.9

@ The.As.9. Gì? Đầu tiên bạn nói "Tôi muốn bắt ngoại lệ". Bây giờ bạn đang nói "Tôi không cần từ khóa để bắt ngoại lệ". Bạn có thể làm rõ điều này theo một cách nào đó?
S.Lott

1
@ S.Lott. Tôi không cần phải bắt ngoại lệ với từ khóa, chỉ cần thử, ngoại trừ câu lệnh trong mã ....
The.Anti.9

1
Tôi đặt lại câu hỏi để làm cho nó phù hợp hơn với câu trả lời được chấp nhận.
jilles de wit

Câu trả lời:


381

Bạn đang tìm kiếm tiếp tục .


31
Đây phải là một trong những câu trả lời SO ngắn gọn nhất mà tôi từng thấy!
Austin A

70
Câu hỏi thực sự: Có phải là 'g' trong 'lookin' Pythonic?
Mason Gardner

50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue

17

Một cái gì đó như thế này?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()

1
Chỉnh sửa để sử dụng tiếp tục chứ không phải vượt qua.
jilles de wit

16

Ví dụ cho Tiếp tục:

number = 0

for number in range(10):
   number = number + 1

   if number == 5:
      continue    # continue here

   print('Number is ' + str(number))

print('Out of loop')

Đầu ra:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 6 # Note: 5 is skipped!!
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop


5

Đối với trường hợp sử dụng cụ thể này, sử dụng try..except..elselà giải pháp sạch nhất, elsemệnh đề sẽ được thực thi nếu không có ngoại lệ nào được nêu ra.

LƯU Ý: elseMệnh đề phải tuân theo tất cả exceptcác mệnh đề

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.