Python 3 - ลูป
โดยทั่วไปคำสั่งจะดำเนินการตามลำดับ - คำสั่งแรกในฟังก์ชันจะถูกเรียกใช้ก่อนตามด้วยคำสั่งที่สองและอื่น ๆ อาจมีสถานการณ์ที่คุณต้องเรียกใช้บล็อกโค้ดหลาย ๆ ครั้ง
ภาษาโปรแกรมจัดเตรียมโครงสร้างการควบคุมต่างๆที่ช่วยให้เส้นทางการดำเนินการซับซ้อนมากขึ้น
คำสั่งวนซ้ำช่วยให้เราดำเนินการคำสั่งหรือกลุ่มของคำสั่งได้หลายครั้ง แผนภาพต่อไปนี้แสดงคำสั่งลูป -
ภาษาโปรแกรม Python จัดเตรียมลูปประเภทต่อไปนี้เพื่อจัดการกับข้อกำหนดการวนซ้ำ
ซีเนียร์ | ประเภทห่วงและคำอธิบาย |
---|---|
1 | ในขณะที่วนซ้ำ ทำซ้ำคำสั่งหรือกลุ่มของคำสั่งในขณะที่เงื่อนไขที่กำหนดเป็น TRUE จะทดสอบเงื่อนไขก่อนที่จะดำเนินการร่างกายลูป |
2 | สำหรับห่วง เรียกใช้ลำดับของคำสั่งหลาย ๆ ครั้งและย่อโค้ดที่จัดการตัวแปรลูป |
3 | ลูปที่ซ้อนกัน คุณสามารถใช้ลูปหนึ่งหรือหลายวงในอีกอันหนึ่งหรือหลาย ๆ วงก็ได้ |
คำสั่งควบคุมลูป
คำสั่งควบคุมลูปเปลี่ยนการดำเนินการจากลำดับปกติ เมื่อการดำเนินการออกจากขอบเขตอ็อบเจ็กต์อัตโนมัติทั้งหมดที่สร้างขึ้นในขอบเขตนั้นจะถูกทำลาย
Python รองรับคำสั่งควบคุมต่อไปนี้
ซีเนียร์ | คำชี้แจงและคำอธิบายการควบคุม |
---|---|
1 | คำสั่งทำลาย ยุติคำสั่งลูปและโอนการดำเนินการไปยังคำสั่งทันทีตามลูป |
2 | ดำเนินการต่อ ทำให้ลูปข้ามส่วนที่เหลือของร่างกายและทดสอบสภาพของมันใหม่ทันทีก่อนที่จะย้ำอีกครั้ง |
3 | ใบแจ้งยอด คำสั่ง pass ใน Python ใช้เมื่อจำเป็นต้องใช้คำสั่งในเชิงวากยสัมพันธ์ แต่คุณไม่ต้องการให้คำสั่งหรือโค้ดใด ๆ ดำเนินการ |
ให้เราดูคำสั่งควบคุมลูปสั้น ๆ
Iterator และ Generator
Iteratorเป็นวัตถุที่ช่วยให้โปรแกรมเมอร์สามารถสำรวจผ่านองค์ประกอบทั้งหมดของคอลเล็กชันโดยไม่คำนึงถึงการนำไปใช้งานเฉพาะ ใน Python ออบเจ็กต์ตัววนซ้ำจะใช้สองวิธีiter() และ next().
สามารถใช้วัตถุ String, List หรือ Tuple เพื่อสร้าง Iterator
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) #prints next available element in iterator
Iterator object can be traversed using regular for statement
!usr/bin/python3
for x in it:
print (x, end=" ")
or using next() function
while True:
try:
print (next(it))
except StopIteration:
sys.exit() #you have to import sys module for this
ก generator เป็นฟังก์ชันที่สร้างหรือให้ลำดับของค่าโดยใช้วิธีการให้ผลตอบแทน
เมื่อเรียกใช้ฟังก์ชันเครื่องกำเนิดจะส่งคืนวัตถุเครื่องกำเนิดไฟฟ้าโดยไม่ต้องเริ่มต้นการเรียกใช้ฟังก์ชัน เมื่อเมธอด next () ถูกเรียกเป็นครั้งแรกฟังก์ชันจะเริ่มดำเนินการจนกว่าจะถึงคำสั่ง yield ซึ่งจะส่งคืนค่าที่ได้รับ ผลตอบแทนติดตามเช่นจำการดำเนินการครั้งสุดท้ายและการเรียกถัดไป () ครั้งที่สองต่อจากค่าก่อนหน้า
ตัวอย่าง
ตัวอย่างต่อไปนี้กำหนดเครื่องกำเนิดไฟฟ้าซึ่งสร้างตัววนซ้ำสำหรับหมายเลขฟีโบนักชีทั้งหมด
#!usr/bin/python3
import sys
def fibonacci(n): #generator function
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(5) #f is iterator object
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()