Coding for KidsCoding for Kids
ระดับสร้างสรรค์ความท้าทายคู่มือครู
โหวตสำหรับฟีเจอร์
หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ

โมดูลสตริงและเวลา
โมดูลปฏิทิน

วัตถุประสงค์

ตรวจสอบปฏิทินและตั้งค่าวันที่สำหรับเส้นตายการจัดส่งบางส่วนโดยใช้โมดูล Calendar

มีการจัดส่งหลายรายการที่มาถึงและตารางเวลาที่ต้องปฏิบัติตามเพื่อให้สามารถแจกจ่ายไปยังการก่อสร้างฟาร์มใหม่ได้ ก่อนหน้านี้เราใช้โมดูล date ในการตั้งป้ายการจัดส่ง ที่นี่เราจะตั้งค่าตารางเวลาด้วยการใช้โมดูล calendar

เพื่อให้สามารถใช้คลาสและฟังก์ชันของโมดูลได้ ให้ใช้ import calendar เพื่อเรียกใช้วัสดุที่เกี่ยวข้องทั้งหมด

สำหรับวัตถุประสงค์ของเรา เราจะใช้ฟังก์ชันในโมดูล calendar ดังต่อไปนี้:

  • calendar.calendar(): แสดงปฏิทินทั้งหมดสำหรับปี โดยรับอาร์กิวเมนต์หนึ่ง (1) ตัว คือปีที่คุณต้องการจะแสดง
  • calendar.month(): แสดงปฏิทินสำหรับเดือนเดียว โดยรับอาร์กิวเมนต์สอง (2) ตัว คือปีและเดือน
  • calendar.isleap(): ตรวจสอบว่าปีที่ระบุเป็นปีอธิกสุรทินหรือไม่ โดยรับอาร์กิวเมนต์หนึ่ง (1) ตัว คือปีที่ต้องการตรวจสอบ
  • calendar.leapdays(): ตรวจสอบจำนวนวันอธิกสุรทินที่สะสมตลอดหลายปี โดยรับอาร์กิวเมนต์สอง (2) ตัว คือปีที่ครอบคลุมช่วงเวลาที่คุณต้องการตรวจสอบ
  • itermonthdays(): ใช้คลาส Calendar() ทำการวนซ้ำวันที่ทั้งหมดในเดือน โดยรับอาร์กิวเมนต์สองตัว คือปีและเดือน
  • itermonthdates(): ใช้คลาส Calendar() ทำการวนซ้ำวันที่ทั้งหมดในเดือน โดยรับอาร์กิวเมนต์สองตัว คือปีและเดือน
  • monthdayscalendar(): ใช้คลาส Calendar() ทำการวนซ้ำสัปดาห์ทั้งหมดในเดือน โดยรับอาร์กิวเมนต์สองตัว คือปีและเดือน เก็บข้อมูลในรูปแบบลิสต์ซ้อน
  • monthdays2calendar(): เช่นเดียวกับฟังก์ชันก่อนหน้าแต่เก็บสัปดาห์และวันในลิสต์สองมิติ

ในการเริ่มต้น ให้เดินไปที่เครื่องหมาย X สีทองและตรวจสอบปฏิทิน สร้างตัวแปรชื่อ cal และเก็บค่าของ calendar.calendar() โดยเพิ่มปี 2026 เป็นอาร์กิวเมนต์ เช่นนี้: cal = calendar.calendar(2026) ใช้ฟังก์ชัน display() เพื่อแสดงตัวแปร cal ที่คุณเพิ่งตั้งค่าไว้

หลังจากตรวจสอบและแสดงปฏิทินแล้ว ให้ไปที่เครื่องหมาย X สีอ่อนและตรวจสอบสเปรดชีตบนโต๊ะ ใช้ฟังก์ชัน read() เพื่อตรวจสอบบันทึกข้อความเกี่ยวกับเดือนที่กำหนดสำหรับการจัดส่ง สร้างตัวแปรสองตัว หนึ่งชื่อ year และอีกหนึ่งชื่อ month และนำข้อมูลที่คุณอ่านมาใส่ลงในตัวแปรเหล่านั้น

สร้างตัวแปรชื่อ calendar_month และเก็บค่าของฟังก์ชัน calendar.month() โดยใช้ตัวแปร year และ month เป็นอาร์กิวเมนต์ ใช้ฟังก์ชัน display() เพื่อแสดงปฏิทินเดือนซึ่งจะนำมาใช้ตั้งตารางเวลาการจัดส่ง

เดินไปที่เครื่องหมาย X สีเข้มเหนือพรมสีเขียว ที่นี่เราจะเขียนจุดข้อมูลบางอย่างเพื่อให้แน่ใจว่าตารางเวลาไม่เกิดการเบี่ยงเบน สร้างตัวแปรสองตัว หนึ่งชื่อ leap_year และอีกหนึ่งชื่อ leap_days สำหรับตัวแปร leap_year ให้เก็บผลลัพธ์ของ calendar.isleap() และตั้งค่า 2026 เป็นอาร์กิวเมนต์ สิ่งนี้จะช่วยให้คุณตรวจสอบได้ว่าปีของโปรเจกต์ในปัจจุบันเป็นปีอธิกสุรทินหรือไม่ สำหรับตัวแปร leap_days ให้เก็บค่าของ calendar.leapdays() และเพิ่มค่า: 2020 และ 2027 เป็นอาร์กิวเมนต์ ซึ่งจะตรวจสอบจำนวนวันอธิกสุรทินที่เกิดขึ้นตลอดระยะเวลาของโปรเจกต์ ใช้ฟังก์ชัน write() ที่เตรียมไว้ล่วงหน้าและเพิ่มตัวแปร leap_year และ leap_days ลงไปเพื่อบันทึกข้อมูล

เดินไปที่เครื่องหมาย X สีเข้มเหนือพรมสีแดงแล้วหันหน้าไปที่โต๊ะ ที่นี่เราจะวางแผนตารางเวลาของเดือน สร้างตัวแปรชื่อ date และเก็บค่าจาก calendar.Calendar() ซึ่งจะสร้างออบเจ็กต์คลาสที่เราสามารถอ้างอิงได้ในภายหลัง สร้างตัวแปรอีกชื่อ day_roster และกำหนดให้เป็นสตริงว่าง เช่นนี้: day_roster = ""

ในตัวแก้ไขมีลูป for ที่เตรียมไว้แล้วสำหรับการวนซ้ำในปฏิทินและวางแผนวันที่ ใช้ฟังก์ชัน itermonthdays() และเพิ่มตัวแปร year และ month ที่คุณสร้างขึ้นก่อนหน้านี้เป็นอาร์กิวเมนต์ กรอกข้อมูลที่ขาดหายไปหากจำเป็นเพื่อรวบรวมยอดผลของรายชื่อ

for day in dates.itermonthdays(-insert value-, -insert value-): entry = "Day: %s \n" % (day) day_roster += entry

เมื่อคุณตั้งค่าลูปแล้ว ให้ทำซ้ำลูปนี้อีกครั้งแต่แทนที่ฟังก์ชัน itermonthdays() ด้วย itermonthdates() และเพิ่มตัวแปร year และ month เป็นอาร์กิวเมนต์ สำหรับตัวแปร entry ให้บันทึกข้อมูลดังนี้: entry = "%s \n" % (day) สิ่งนี้จะให้วันที่ทั้งหมดของระยะเวลาโปรเจกต์ ใช้ฟังก์ชัน display() ที่เตรียมไว้ล่วงหน้าพร้อมกับตัวแปร day_roster เพื่อแสดงรายชื่อวันทั้งหมดของโปรเจกต์ในปฏิทิน

เดินไปที่เครื่องหมาย X สีเข้มเหนือพรมสีน้ำเงินแล้วหันหน้าไปที่บันทึกข้อความ ที่นี่เราจะตั้งค่ารายการสัปดาห์การติดตามงานของโปรเจกต์ที่ถูกจัดเก็บในลิสต์ สร้างตัวแปรชื่อ weeks และเก็บค่าจาก calendar.Calendar() ซึ่งจะสร้างออบเจ็กต์คลาสที่เราสามารถอ้างอิงฟังก์ชันต่างๆ ได้ เปลี่ยนค่าในตัวแปร month ให้เป็น 7 เพื่อเลื่อนตารางเวลาที่เรากำลังทำงานอยู่ เช่นนี้: month = 7

สร้างตัวแปรชื่อ week_roster และกำหนดให้เป็นสตริงว่าง เช่นนี้: week_roster = "" ในตัวแก้ไขมีลูป for ที่เตรียมไว้แล้วสำหรับการวนซ้ำในปฏิทินและวางแผนวันในสัปดาห์ ใช้ฟังก์ชัน monthdayscalendar() และเพิ่มตัวแปร year และ month ที่คุณสร้างขึ้นก่อนหน้านี้เป็นอาร์กิวเมนต์ กรอกข้อมูลที่ขาดหายไปหากจำเป็นเพื่อรวบรวมยอดผลของรายชื่อ

for day in weeks.monthdayscalendar(-insert value-, -insert value-): entry = "%s \n" % (day) week_roster += entry

เมื่อคุณตั้งค่าลูปแล้ว ให้ทำซ้ำลูปนี้อีกครั้งแต่แทนที่ฟังก์ชัน monthdayscalendar() ด้วย monthdays2calendar() และเพิ่มตัวแปร year และ month เป็นอาร์กิวเมนต์ สิ่งนี้จะให้วันที่ทั้งหมดของระยะเวลาโปรเจกต์ ใช้ฟังก์ชัน display() ที่เตรียมไว้ล่วงหน้าพร้อมกับตัวแปร week_roster เพื่อแสดงรายชื่อวันทำงานทั้งหมดของโปรเจกต์ในปฏิทินเพื่อให้ระดับงานสมบูรณ์

หนังสือโค้ด