นิยามของcontinue
คำสั่งคือ:
continue
คำสั่งยังคงมีการย้ำต่อไปของวง
ฉันไม่พบตัวอย่างที่ดีของรหัส
มีคนแนะนำกรณีง่าย ๆ ที่continue
จำเป็นไหม
นิยามของcontinue
คำสั่งคือ:
continue
คำสั่งยังคงมีการย้ำต่อไปของวง
ฉันไม่พบตัวอย่างที่ดีของรหัส
มีคนแนะนำกรณีง่าย ๆ ที่continue
จำเป็นไหม
คำตอบ:
นี่คือตัวอย่างง่ายๆ:
for letter in 'Django':
if letter == 'D':
continue
print("Current Letter: " + letter)
ผลลัพธ์จะเป็น:
Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o
มันยังคงวนรอบถัดไปของการวนซ้ำ
continue
ทำ แต่ไม่มีประโยชน์มากนักเมื่อคุณสามารถทำได้if letter != 'D': print 'Current Letter:', letter
ฉันชอบที่จะใช้ลูปต่อไปในกรณีที่มีการแข่งขันมากมายที่ต้องทำให้สำเร็จก่อนที่คุณจะ "ทำธุรกิจ" ดังนั้นแทนที่จะเป็นรหัสดังนี้:
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()
ฉันได้รับรหัสเช่นนี้:
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()
ด้วยวิธีนี้ฉันหลีกเลี่ยงโค้ดที่ซ้อนกันอย่างลึกซึ้ง นอกจากนี้มันเป็นเรื่องง่ายที่จะปรับลูปให้เหมาะสมโดยการกำจัดกรณีที่เกิดขึ้นบ่อยที่สุดก่อนดังนั้นฉันต้องจัดการกับกรณีที่ไม่บ่อยนัก แต่มีความสำคัญ (เช่นตัวหารคือ 0) เมื่อไม่มี showstopper อื่น ๆ
continue
GOTO
แต่นี้เป็นสิทธิGOTO
วิธีการใช้
โดยทั่วไปแล้วสถานการณ์ที่ต้องการดำเนินการต่อ / มีประโยชน์คือเมื่อคุณต้องการข้ามรหัสที่เหลือในลูปและทำซ้ำต่อ
ฉันไม่เชื่อจริง ๆ ว่าจำเป็นเพราะคุณสามารถใช้คำสั่งเพื่อให้ตรรกะเดียวกันเสมอ แต่มันอาจมีประโยชน์ในการเพิ่มความสามารถในการอ่านโค้ด
if <condition>: continue
แทนที่จะif not <condition>: ...
หลีกเลี่ยงระดับของการเยื้องที่จะเป็นอย่างอื่นที่จำเป็นถ้ามันถูกเขียนขึ้นโดยไม่ได้
continue
คำสั่งเราจะกระโดดออกจากส่วนการทดสอบตามเงื่อนไขและอนุญาตให้วนซ้ำเพื่อดำเนินการต่อ ในการทำซ้ำครั้งต่อไปหรือไม่ else
มันไม่ได้เป็นที่ชัดเจนให้กับฉันว่านี้จะดีกว่าการใช้ มันเป็นเพียงแค่ทั้งหมดเกี่ยวกับการปรับปรุงการอ่านและประสิทธิภาพเวลาทำงาน?
import random
for i in range(20):
x = random.randint(-5,5)
if x == 0: continue
print 1/x
ดำเนินการต่อเป็นคำสั่งควบคุมที่สำคัญอย่างยิ่ง รหัสด้านบนแสดงถึงแอปพลิเคชันทั่วไปซึ่งสามารถหลีกเลี่ยงผลลัพธ์ของการหารด้วยศูนย์ได้ ฉันใช้มันบ่อยครั้งเมื่อฉันต้องการจัดเก็บผลลัพธ์จากโปรแกรม แต่ไม่ต้องการจัดเก็บผลลัพธ์หากโปรแกรมขัดข้อง หมายเหตุเพื่อทดสอบตัวอย่างข้างต้นแทนที่ statement ล่าสุดด้วย print 1 / float (x) หรือคุณจะได้ค่าศูนย์ทุกครั้งที่มีเศษส่วนเนื่องจาก randint ส่งคืนจำนวนเต็ม ฉันละเว้นมันเพื่อความชัดเจน
บางคนแสดงความคิดเห็นเกี่ยวกับความสามารถในการอ่านโดยพูดว่า "โอ้มันไม่ได้ช่วยให้อ่านง่ายขนาดนั้นใครจะสนใจ?"
สมมติว่าคุณต้องตรวจสอบก่อนที่รหัสหลัก:
if precondition_fails(message): continue
''' main code here '''
หมายเหตุคุณสามารถทำได้หลังจากเขียนรหัสหลักโดยไม่เปลี่ยนรหัสดังกล่าว หากคุณแตกต่างรหัสเฉพาะบรรทัดที่เพิ่มด้วย "ดำเนินการต่อ" จะถูกเน้นเนื่องจากไม่มีการเปลี่ยนแปลงระยะห่างในรหัสหลัก
ลองนึกภาพถ้าคุณต้องทำ breakfix ของรหัสการผลิตซึ่งจะเป็นการเพิ่มบรรทัดด้วยการดำเนินการต่อ ง่ายที่จะเห็นว่าเป็นเพียงการเปลี่ยนแปลงเมื่อคุณตรวจสอบรหัส หากคุณเริ่มตัดโค้ดหลักใน if / else diff จะไฮไลต์โค้ดที่เยื้องใหม่เว้นแต่คุณจะไม่สนใจการเปลี่ยนแปลงระยะห่างซึ่งเป็นอันตรายโดยเฉพาะใน Python ฉันคิดว่าถ้าคุณไม่ได้อยู่ในสถานการณ์ที่คุณต้องใช้รหัสในการแจ้งให้ทราบสั้น ๆ คุณอาจไม่พอใจอย่างเต็มที่
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
คำสั่งเพิ่มที่นี่อะไร มันสามารถกำจัดได้โดยใช้element not in colors
และรหัสจะสามารถอ่านได้
สมมติว่าเราต้องการพิมพ์ตัวเลขทั้งหมดที่ไม่ใช่ทวีคูณของ 3 และ 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
กับการใช้งาน ข้อสรุปของฉันคือการที่ไม่เคยมีความจำเป็นแต่ในบางกรณี (เช่นนี้) continue
รหัสสามารถอ่านได้มากขึ้นโดยใช้ มันเป็นตัวอย่างที่ดีมาก
ไม่จำเป็นอย่างยิ่งเนื่องจากสามารถใช้กับ IF ได้ แต่สามารถอ่านได้มากขึ้นและมีราคาไม่แพงในระยะเวลาใช้งาน
ฉันใช้เพื่อข้ามการวนซ้ำในลูปถ้าข้อมูลไม่ตรงตามข้อกำหนดบางประการ:
# 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))
เอาท์พุท:
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
อย่างที่คุณเห็นค่าที่ไม่ถูกต้องไม่ได้ทำหลังจากcontinue
คำสั่ง
if
สามารถทำอะไรได้continue
ถ้ารหัสทั้งหมดมีอยู่ในบล็อก continue
ข้ามรหัสที่อยู่นอกif
บล็อก
ตัวอย่างเช่นหากคุณต้องการทำสิ่งที่แตกต่างกันขึ้นอยู่กับค่าของตัวแปร:
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
ในตัวอย่างด้านบนถ้าฉันใช้break
ล่ามจะข้ามลูป แต่ด้วยการcontinue
ข้ามคำสั่ง if-elif เท่านั้นและไปที่รายการถัดไปของลูป
my_var
0
continue
มันไม่ได้เป็นโฆษณาที่ดีสำหรับการใช้
elif
ควรจะเป็นif
คือ รหัสไม่ได้ให้ลักษณะที่คุณรู้ว่าคุณกำลังทำอะไรอยู่
continue
เพียงข้ามส่วนที่เหลือของรหัสในการวนซ้ำจนกว่าจะถึงการวนซ้ำครั้งต่อไป