Jawaban:
Berikut ini contoh sederhana:
for letter in 'Django':
if letter == 'D':
continue
print("Current Letter: " + letter)
Output akan menjadi:
Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o
Ini berlanjut ke iterasi loop berikutnya.
continue
dilakukan tetapi itu tidak terlalu berguna, ketika Anda bisa melakukannyaif letter != 'D': print 'Current Letter:', letter
Saya suka menggunakan terus dalam loop di mana ada banyak kondisi yang harus dipenuhi sebelum Anda "turun ke bisnis". Jadi alih-alih kode seperti ini:
for x, y in zip(a, b):
if x > y:
z = calculate_z(x, y)
if y - z < x:
y = min(y, z)
if x ** 2 - y ** 2 > 0:
lots()
of()
code()
here()
Saya mendapatkan kode seperti ini:
for x, y in zip(a, b):
if x <= y:
continue
z = calculate_z(x, y)
if y - z >= x:
continue
y = min(y, z)
if x ** 2 - y ** 2 <= 0:
continue
lots()
of()
code()
here()
Dengan melakukannya dengan cara ini saya menghindari kode yang sangat bersarang. Juga, mudah untuk mengoptimalkan loop dengan menghilangkan kasus yang paling sering terjadi terlebih dahulu, sehingga saya hanya harus berurusan dengan kasus yang jarang tetapi penting (misalnya pembagi adalah 0) ketika tidak ada showstopper lainnya.
continue
dengan cara ini mirip dengan menggunakan GOTO
. Namun, ini cara yang tepat untuk digunakanGOTO
.
Biasanya situasi di mana lanjutkan diperlukan / berguna, adalah ketika Anda ingin melewatkan kode yang tersisa dalam loop dan melanjutkan iterasi.
Saya tidak benar-benar percaya itu perlu, karena Anda selalu dapat menggunakan pernyataan jika memberikan logika yang sama, tetapi mungkin berguna untuk meningkatkan keterbacaan kode.
if <condition>: continue
alih - alih if not <condition>: ...
menghindari tingkat lekukan yang seharusnya diperlukan jika ditulis tanpa itu.
continue
pernyataan, kita pada dasarnya melompat keluar dari bagian pengujian bersyarat dan memungkinkan iterasi dari loop untuk melanjutkan ke iterasi berikutnya? Tidak jelas bagi saya bagaimana ini akan lebih baik daripada menggunakan else
. Apakah ini semua tentang peningkatan keterbacaan dan kinerja run-time?
import random
for i in range(20):
x = random.randint(-5,5)
if x == 0: continue
print 1/x
melanjutkan adalah pernyataan kontrol yang sangat penting. Kode di atas menunjukkan aplikasi khas, di mana hasil pembagian dengan nol dapat dihindari. Saya sering menggunakannya ketika saya perlu menyimpan output dari program, tetapi tidak ingin menyimpan output jika program macet. Catatan, untuk menguji contoh di atas, ganti pernyataan terakhir dengan print 1 / float (x), atau Anda akan mendapatkan nol setiap kali ada pecahan, karena randint mengembalikan integer. Saya menghilangkannya untuk kejelasan.
Beberapa orang berkomentar tentang keterbacaan, dengan mengatakan, "Oh, itu tidak banyak membantu keterbacaan, siapa yang peduli?"
Misalkan Anda perlu cek sebelum kode utama:
if precondition_fails(message): continue
''' main code here '''
Perhatikan Anda dapat melakukan ini setelah kode utama ditulis tanpa mengubah kode itu. Jika Anda membedakan kode, hanya baris yang ditambahkan dengan "lanjutkan" yang akan disorot karena tidak ada perubahan spasi pada kode utama.
Bayangkan jika Anda harus melakukan perbaikan kode produksi, yang ternyata hanya menambahkan baris dengan melanjutkan. Sangat mudah untuk melihat bahwa satu-satunya perubahan ketika Anda meninjau kode. Jika Anda mulai membungkus kode utama di if / else, diff akan menyorot kode yang baru diindentasi, kecuali jika Anda mengabaikan perubahan spasi, yang berbahaya terutama di Python. Saya pikir kecuali Anda sudah dalam situasi di mana Anda harus mengeluarkan kode dalam waktu singkat, Anda mungkin tidak sepenuhnya menghargai ini.
def filter_out_colors(elements):
colors = ['red', 'green']
result = []
for element in elements:
if element in colors:
continue # skip the element
# You can do whatever here
result.append(element)
return result
>>> filter_out_colors(['lemon', 'orange', 'red', 'pear'])
['lemon', 'orange', 'pear']
continue
pernyataan itu di sini? Itu bisa dihilangkan dengan menggunakan , dan kodenya akan mudah dibaca. element not in colors
Katakanlah kita ingin mencetak semua angka yang bukan kelipatan 3 dan 5
for x in range(0, 101):
if x % 3 ==0 or x % 5 == 0:
continue
#no more code is executed, we go to the next number
print x
if x %3 == 0 or x % 5 == 0:
, pass
, else:
,print x
continue
. Kesimpulan saya adalah bahwa tidak pernah ada kebutuhan , tetapi dalam beberapa kasus (seperti ini) kodenya lebih mudah dibaca continue
. Ini contoh yang sangat bagus.
Ini tidak mutlak diperlukan karena dapat dilakukan dengan IF tetapi lebih mudah dibaca dan juga lebih murah dalam menjalankan waktu.
Saya menggunakannya untuk melewati iterasi dalam satu lingkaran jika data tidak memenuhi beberapa persyaratan:
# List of times at which git commits were done.
# Formatted in hour, minutes in tuples.
# Note the last one has some fantasy.
commit_times = [(8,20), (9,30), (11, 45), (15, 50), (17, 45), (27, 132)]
for time in commit_times:
hour = time[0]
minutes = time[1]
# If the hour is not between 0 and 24
# and the minutes not between 0 and 59 then we know something is wrong.
# Then we don't want to use this value,
# we skip directly to the next iteration in the loop.
if not (0 <= hour <= 24 and 0 <= minutes <= 59):
continue
# From here you know the time format in the tuples is reliable.
# Apply some logic based on time.
print("Someone commited at {h}:{m}".format(h=hour, m=minutes))
Keluaran:
Someone commited at 8:20
Someone commited at 9:30
Someone commited at 11:45
Someone commited at 15:50
Someone commited at 17:45
Seperti yang Anda lihat, nilai yang salah tidak berhasil setelah continue
pernyataan.
if
hanya dapat melakukan apa continue
jika semua kode terkandung dalam sebuah blok. continue
melewatkan kode yang bahkan di luar if
blok.
Misalnya jika Anda ingin melakukan hal-hal yang berbeda tergantung pada nilai variabel:
my_var = 1
for items in range(0,100):
if my_var < 10:
continue
elif my_var == 10:
print("hit")
elif my_var > 10:
print("passed")
my_var = my_var + 1
Dalam contoh di atas jika saya menggunakan break
interpreter akan melewatkan loop. Tetapi dengan continue
itu hanya melewatkan pernyataan if-elif dan langsung ke item berikutnya dari loop.
my_var
dari 0
.
continue
.
elif
harus menjadi if
. Kode hanya tidak memberikan tampilan yang Anda tahu apa yang Anda lakukan.
continue
cukup lewati sisa kode dalam loop sampai iterasi berikutnya