אין לזה צורה - מחברת 4

נוסף על הפעולות שהוזכרו מעלה, כתבו פעולה של המחלקה בשם rand_rects המגרילה מספר בין 1 ל־50.
צרו רשימה המכילה מספר מלבנים בהתאם למספר שהוגרל, ועבור כל מלבן הגרילו נקודות על ידי שימוש בפעולות המתאימות.
את כל הצורות הנ"ל הכניסו לרשימה, והדפיסו את כל הצורות ששטחן גדול מ־900 והיקפן גדול מ־30.

לא ברור אם הפעולה rand_rects רק מגרילה 1 עד 50,
או מבצעת גם את יצירת הרשימה וגם את ההדפסה…

מה לדעתך הדבר ההגיוני לעשות?

לייק 1
3 לייקים

מצטרפת בשאלה נוספת על “אין לזה צורה” -
האם כשאני מגרילה נקודות חדשות של התחלה וסוף, אני צריכה לייצר אותן כך שהן עומדות בקריטריונים של “שמאלית עליונה” ו"ימנית תחתונה"? או שאפשר לקחת כל שתי נקודות ולעשות קצת ערכים מוחלטים כדי לא לקבל שטויות? (מה שנשמע לי אישית יותר הגיוני)

ממש תודה, אחלה תרגיל :slight_smile:

לייק 1

אישית הייתי מגריל אותן עד שמקבל תוצאה הגיונית. מעדיף לא לתקן במרומז ערכים, יש לזה נטייה ליצור תוצאות שהיוזר לא ציפה להן וזה עלול לפתיע ולתסכל

לייק 1

זה בתוך או מחוץ למחלקה הפונקציה rand_rects?

זה בסדר שלפעמים השטח יכול להיות 0?

אתה מכיר מלבן שהשטח שלו הוא אפס ? אם כן, לך על זה.

עד עכשיו חשבתי שצריך לקרוא לפונקציות של הנקודות מחוץ למחלקה כדי שזה יפעיל אותן… אתה אומר שצריך להפעיל אותן אוטומטית כשיוצרים טיפוס מסוג מלבן ולהמשיך עד שיוצאת תוצאה הגיונית?

לא, פעולת האתחול מקבלת start_point ו־end_point. ההגרלה יכולה להתבצע מבחוץ.
אם את רוצה להגדיל ראש – אם לא מעבירים לפעולת האתחול פרמטרים, שתגריל

לייק 1

לא הבנתי:
ההגרלה מתבצעת מחוץ למחלקה? או שהיא צריכה להיות בתוך פונקציה של המחלקה?

ההגרלה צריכה להיות פעולה של כל אחד מהמופעים, והשמה לתכונות של המחלקה היא לרוב חלק מקוד המחלקה.

תודה
(כך חשבתי.)
אבל אני מסתבכת מאד:
כמו בכל מחלקה, כל הפונקציות של המחלקה Rectangle צריכות self כדי לעבוד.
גם אלה שבוחרות נקודות אקראיות לצד שמאל למעלה וימין למטה של המלבן - randomize_start/end_point (וגם אלה שרוצות לפלטר את ההקף והשטח).

חזרתי על תחילת מחברת 3, ואני עדיין לא מצליחה להתגבר על יצירת מלבן באופן רנדומלי.
הפונקציות בוחרות נקודות באקראי, אבל כדי לבחור אותן, הן צריכות איזשהו מלבן לצאת ממנו.
ואת המלבן אני יוצרת רק אחרי שאני בודקת שהנקודות שהוגרלו הן “בסדר” למלבן.
אז אין לפונקציות self בנקודת הפתיחה…
אשמח להכוונה

אין צורך להיעזר במחברת 3. כשאת אומרת “יצירה” את אומרת __init__.
המשתנה self קיים מההשנייה שנכנסת ל־__init__ ואת יכולה להשתמש בו כדי להפעיל פעולות אחרות של המחלקה.
בהצלחה

עדיין לא מסתדרת:
ל init אני נכנסת בלי לקרוא לו ישירות ברגע שאני יוצאת מלבן.
כשאני קוראת לrandomize_start/end_point אני עדיין לא יודעת מראש שהנקודות “טובות” אז אני לא יכולה להשתמש בהן ישירות מתוך init

https://solve.pythonic.guru/view/101838
עקפתי את העניין על ידי יצירת מלבן, ושימוש בו כדי להפעיל את הפונקציות של המחלקה.
אני מניחה שיש דרכים טובות יותר.
לא הצלחתי להפעיל מבחוץ בלי מופע של מלבן.
אשמח לקבל עזרה