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

โมดูลคณิตศาสตร์
บทนำโมดูลคณิตศาสตร์

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

ตรวจสอบโฉนดที่ดินและเส้นแบ่งเขตของฟาร์ม, ตรวจสอบและคำนวณตัวเลขโดยใช้ฟังก์ชันจาก Math Module

ในสำนักงานที่อยู่ปลายสุดของอาคารหลัก มีคลังเก็บแผนผังเก่า ๆ ของอาคารและโฉนดที่ดิน มีแผนที่จะขยายฟาร์มไปทางทิศตะวันออก แต่เป็นเรื่องสำคัญที่จะต้องเรียงเอกสารทั้งหมดให้เรียบร้อยก่อนที่คุณจะตัดสินใจดูแผนการก่อสร้าง ซึ่งจะทำโดยใช้โมดูล math ของ python

import math

เช่นเดียวกับโมดูลสถิติก่อนหน้านี้, โมดูล math มีชุดฟังก์ชันคณิตศาสตร์ที่เราสามารถใช้เพื่อขยายไลบรารีที่ติดมากับ python:

  • math.isnan(): ตรวจสอบว่าค่าที่ป้อนเข้าไม่ใช่ตัวเลขหรือไม่

  • math.isinf(): ตรวจสอบว่าค่าที่ป้อนเข้าเป็นตัวเลขอนันต์หรือไม่

  • math.isfinite(): ตรวจสอบว่าค่าที่ป้อนเข้าจำกัดหรือไม่

  • math.prod(): คูณอาร์กิวเมนต์ทั้งหมดที่ป้อนเข้ามา

  • math.pow(): รับอาร์กิวเมนต์สองตัวและคืนค่าของอาร์กิวเมนต์แรกยกกำลังอาร์กิวเมนต์ที่สอง

  • math.trunc(): ตัดส่วนทศนิยมออกจากตัวเลขจุดลอย ทำให้กลายเป็นจำนวนเต็ม (ไม่ปัดเศษ, เพียงแค่ตัดออก)

  • math.copysign(): รับอาร์กิวเมนต์สองตัว, คัดลอกเครื่องหมาย (-,+) จากอาร์กิวเมนต์ตัวที่สองและนำไปใช้กับตัวแรก

  • math.factorial(): รับอาร์กิวเมนต์หนึ่งตัวและคำนวณผลคูณของตัวเลขนั้นนับถอยหลังจนถึง 1 ตัวอย่างเช่น ถ้าค่าเป็น 5 จะคำนวณ: 5 x 4 x 3 x 2 x 1 และให้ผลลัพธ์

เราจะใช้ฟังก์ชันเหล่านี้ในการตรวจสอบและบันทึกข้อมูลเพื่อเตรียมโครงการพัฒนา มีค่าสัญลักษณ์คงที่สามรายการที่เก็บแผนผังของฟาร์ม ได้แก่: red_schematics , green_schematics , blue_schematics แผนผังเหล่านี้มีค่าที่ไม่ใช่ตัวเลขและค่าไม่สามารถใช้งานได้ ให้ใช้ฟังก์ชัน math เพื่อตรวจสอบองค์ประกอบและค้นหาข้อมูลที่ใช้งานได้เพื่อบันทึกลงแผนผัง

เริ่มต้นเดินไปยังเครื่องหมาย X สีเข้มเหนือพรมสีแดง แล้วใช้ลูปเพื่อวนซ้ำผ่านองค์ประกอบในค่าสัญลักษณ์คงที่ red_schematics เพื่อตรวจสอบองค์ประกอบที่สามารถใช้งานได้

for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)

ลูปจะวนซ้ำผ่านองค์ประกอบทั้งหมดในรายการ, ฟังก์ชัน math.isnan() จะระบุรายการที่ไม่ใช่ตัวเลข ในขณะที่ math.isinf() จะระบุค่าที่เป็นอนันต์ซึ่งไม่สามารถนำมาใช้ในการเก็บข้อมูลได้ สร้างรายการใหม่ชื่อ red_values และใช้ list comprehension เพื่อกรองเอาองค์ประกอบที่ไม่ต้องการออกโดยใช้ math.isfinite() ตัวอย่างเช่น: red_values = [x for x in red_schematics if math.isfinite(float(x))]

จากนั้น รวมค่าทุกตัวเข้าด้วยกันโดยใช้ฟังก์ชัน math.prod() เพื่อรวมค่าทั้งหมดในรายการ เช่น: red_values = math.prod(red_values)

ทำกระบวนการกรองเดียวกันนี้บนเครื่องหมาย X สีเข้มเหนือพรมสีเขียวและสีน้ำเงิน โดยใช้ค่าสัญลักษณ์คงที่ green_schematics และ blue_schematics และรวบรวมองค์ประกอบในรายการที่ชื่อ green_values และ blue_values เดินไปยังเครื่องหมาย X สีทอง หันหน้าไปยังโต๊ะ และใช้ฟังก์ชัน write() ที่เขียนไว้ล่วงหน้าในโปรแกรมแก้ไขเพื่อบันทึกข้อมูลแผนผังที่ใช้งานได้ เมื่อคุณรวมทุกอย่างเข้าด้วยกันแล้ว ให้เดินไปยังเครื่องหมาย X สีสว่างและใช้ฟังก์ชัน open() เพื่อเข้าถึงห้องถัดไป

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

เดินไปยังเครื่องหมาย X สีเข้มเหนือพรมสีม่วง สร้างตัวแปรชื่อ purple_data และใช้ฟังก์ชัน math.pow() เพื่อคูณข้อมูลที่คุณได้รับเพื่อให้ได้ข้อมูลพิกัด ยกค่าดัชนีเป็นกำลัง 3 เช่น: purple_data = math.pow( -index data- , 3 ) โดยอย่าลืมเพิ่มข้อมูลดัชนีที่คุณอ่านมาก่อน ใช้ math.trunc() เพื่อลบข้อมูลทศนิยมออกจากตัวแปร เช่น: purple_data = math.trunc(purple_data) เมื่อทำเสร็จแล้ว ที่เครื่องหมาย X ให้ใช้ฟังก์ชัน write() ที่เขียนไว้ล่วงหน้าในโปรแกรมแก้ไขกับ purple_data เพื่อบันทึกข้อมูลที่เก็บไว้ในตัวแปร

สรุปขั้นสุดท้าย, เดินไปยังเครื่องหมาย X สีสว่างหน้าตู้เอกสารข้างโต๊ะทำงานด้านบน ใช้ฟังก์ชัน read() เพื่อรับข้อมูลดัชนีอีกครั้ง โดยข้อมูลนี้จำเป็นต้องเปิดออกเพื่อเปิดเผยข้อมูลพิกัดเพิ่มเติมสำหรับที่ดิน สร้างตัวแปรชื่อ white_data เพื่อเก็บค่าข้อมูลที่พบในไฟล์ และตัวแปรชื่อ sign เพื่อเก็บตัวเลขเครื่องหมายที่พบในไฟล์ จากนั้น เดินไปยังเครื่องหมาย X สีเข้มเหนือพรมสีขาว และใช้ฟังก์ชัน math.copysign() โดยใช้ตัวแปรทั้งสองที่คุณสร้างเป็นอาร์กิวเมนต์และกำหนดค่าให้กับ white_data เช่น: white_data = math.copysign(white_data,sign)

เมื่อเสร็จแล้ว โดยใช้ white_data ใช้ฟังก์ชัน math.factorial() เพื่อคูณดัชนี, แปลง white_data เป็นจำนวนเต็มและใช้ร่วมกับฟังก์ชัน เช่น: white_data = math.factorial(int(white_data)) ใช้ฟังก์ชัน write() ที่เขียนไว้ล่วงหน้าเพื่อบันทึก white_data เพื่อให้ระดับเกมเสร็จสมบูรณ์

หนังสือโค้ด