קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מודולים מתמטיים
מבוא למודול מתמטיקה
מטרה
בדוק תעודות קרקע וקווי גבול בחווה, אמת וחשב את המספרים באמצעות פונקציות ממודול math.
במשרד שבקצה הבניין הראשי קיים ארכיון של תכניות בניין ותעודות קרקע ישנות. מתוכננת הרחבת החווה לכיוון מזרח, אך חשוב לסדר את כל המסמכים לפני שתבחר לעיין בתכניות הבנייה. פעולה זו תבוצע על ידי שימוש במודול math של python.
import math
בדומה למודול statistics הקודם, גם במודול math קיימת אוסף של פונקציות מתמטיות שאנו יכולים להשתמש בהן כדי להרחיב את ספריית הבסיס של python:
-
math.isnan(): בודק האם הערך שהוזן אינו מספר -
math.isinf(): בודק האם הערך שהוזן הוא מספר אינסופי -
math.isfinite(): בודק האם הערך שהוזן הוא סופי -
math.prod(): מכפיל את כל הארגומנטים שנמסרו -
math.pow(): מקבל שני ארגומנטים ומחזיר את הערך של הארגומנט הראשון בחזקת הארגומנט השני -
math.trunc(): מקצץ את הארגומנט שסופק, מסיר את החלק העשרוני ממספר צף והופך אותו למספר שלם (לא מעוגל, רק מסיר) -
math.copysign(): מקבל שני ארגומנטים, מעתיק את הסימן (-,+) מהארגומנט השני ומחיל אותו על הראשון -
math.factorial(): מקבל ערך ומכפיל את כל המספרים מהערך הזה ועד 1. לדוגמה, אם הערך הוא5אז:5x4x3x2x1ומפיק תוצאה.
נשתמש בפונקציות אלו כדי לעבור על הנתונים ולרשום אותם, במטרה להכין את פרויקטי הפיתוח. קיימים שלושה קבועי רשימות המכילים סכמות עבור השטח החקלאי בעלי השמות: red_schematics, green_schematics, blue_schematics. בסכמות אלו כתובים ערכים שאינם מספריים ואינם ניתנים לשימוש. השתמש בפונקציות המתמטיות כדי לזהות את האלמנטים, למצוא את הנתונים הניתנים לשימוש כדי שנוכל לרשום אותם.
ראשית, לך לסימן 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 והשתמש בהבנת רשימה כדי להסיר את האלמנטים הלא רצויים על ידי שימוש ב-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 ולסיים את הרמה.